我有一個MongoDB的集合,其在給定的格式文件,匹配的文件上嵌套數組值和計數獨特
{
"_id" : ObjectId("595f5661f34ae7b2adee31bc"),
"app_userUpdatedOn" : "2017-03-09T12:01:07.615Z",
"appId" : 31625,
"app_lastCommunicatedAt" : "2017-03-09T12:18:53.067Z",
"currentDate" : "2017-03-09T12:19:28.626Z",
"objectId" : "58c14850e4b0b2406992b29e",
"name" : "APPSESSION",
"action" : "START",
"installationId" : "98088f6641a0fa79",
"userName" : "98088f6641a0fa79",
"properties" : [
[
"userid",
"98088f6641a0fa79"
],
[
"app_os_version",
"6.0.1"
],
[
"app_installAt",
"2017-03-09T12:01:01.307Z"
],
[
"app_model",
"SM-J210F"
],
[
"app_lastCommunicatedAt",
"2017-03-09T12:18:53.067Z"
],
[
"app_carrier",
"Jio 4G"
],
[
"app_counter",
1
],
[
"app_brand",
"samsung"
],
[
"app_lib_version",
"1.0"
],
[
"app_app_version",
"3.0.2"
],
[
"app_os",
"Android"
]
],
"date" : "2017-03-09"
}
{
"_id" : ObjectId("595f5661f34ae7b2adee31bd"),
"app_userUpdatedOn" : "2017-02-05T07:38:32.866Z",
"appId" : 31625,
"app_lastCommunicatedAt" : "2017-03-09T08:09:05.342Z",
"currentDate" : "2017-03-09T12:19:28.806Z",
"objectId" : "58c14850e4b06ec88ecaa9c6",
"name" : "APPINSTALL",
"action" : "START",
"installationId" : "eef436554fbdf4ac",
"userName" : "eef436554fbdf4ac",
"properties" : [
[
"userid",
"eef436554fbdf4ac"
],
[
"app_os_version",
"5.1"
],
[
"app_installAt",
"2017-02-05T11:20:49.809Z"
],
[
"app_model",
"Micromax Q465"
],
[
"app_lastCommunicatedAt",
"2017-03-09T08:09:05.342Z"
],
[
"app_carrier",
"JIO 4G"
],
[
"app_counter",
1
],
[
"app_brand",
"Micromax"
],
[
"app_lib_version",
"1.0"
],
[
"app_app_version",
"3.0.2"
],
[
"app_os",
"Android"
]
],
"date" : "2017-03-09"
}
我要取的計數和文件的唯一計數,其中的currentdate在於和之間的startDate結束日期,名爲x(例如APPSESSION),包含多個屬性嵌套陣列(例如[ 「app_installAt」, 「這可以是任何值,而不是空 」],[「 app_model」, 「這可以是任何值空「]的TEAD,等...),集團通過的userName
此前我已經創建了一個查詢中嵌套數組元素兩者是已知的,其計算方法如下
db.testing.aggregate(
[
{$match: {currentDate: {$gte:"2017-03-01T00:00:00.000Z", $lt:"2017-03-02T00:00:00.000Z"},name:"INSTALL"}},
{$match: {properties: ["app_os_version","4.4.2"]}},
{$match: {properties: ["app_carrier","telenor"]}},
{$match: {properties: ["app_brand","Micromax"]}},
{$group: {_id: "$userName"}},
{$count: "uniqueCount"}
]
);
但我無法找到數據,我只知道屬性數據嵌套數組的第0個索引。
請幫忙。
由於提前.... :)
我可以指出,數據看起來像這樣的唯一方法是因爲代碼錯誤更新到它的第一位。修正代碼寫錯的代碼會不會更合乎邏輯?這完全是存儲這個錯誤的方法。 –
是的,我知道,但編寫數據的算法是相同的,數據非常巨大,以至於改變數據結構也是不可行的,因爲它包含TB的數據。 – Shashank
如果是Terrabytes的數據,那麼更有理由修復它。現在,您無法有效地使用索引來幫助查詢結果。在所有標準實際上都基於具有特定路徑的鍵和值的數組的情況下,那麼索引將更加有效且速度更快。無論如何,我已經用當前格式的查詢回答了這個問題。 –