1
以下是我收集moviedb:僅顯示滿足mongodb條件的嵌套數組中的元素?
"_id" : ObjectId("59b9501600fcb397d6acd5bb"),
"theatreid" : 2,
"name" : "carnival cinemas",
"location" : "kanjulmarg",
"address" : "sec 2,kanjul, Mumbai, Maharashtra 400703",
"shows" : [
{
"mname" : "bareily ki barfi",
"timings" : [
10,
13,
14,
16,
22
]
},
{
"mname" : "Toilet:ek prem katha",
"timings" : [
8,
9,
14,
16,
20,
23
]
}
]
"_id" : ObjectId("59b9506500fcb397d6acd5bc"),
"theatreid" : 3,
"name" : "pheonix pvr",
"location" : "kurla",
"address" : "sec 26,kurla, Mumbai, Maharashtra 400701",
"shows" : [
{
"mname" : "shubh mangal savdhan",
"timings" : [
9,
11,
15,
18,
20
]
},
{
"mname" : "Toilet:ek prem katha",
"timings" : [
8,
9,
14,
16,
20,
23
]
}
]
我要顯示與電影定時顯示(假設它是24小時格式)大於14(下午2點)。 我用以下查詢:
db.moviedb.find({"shows.timings": {$gt:14}}, {shows: {$elemMatch: {timings:{$gt: 14}}}}).pretty()
它給出以下輸出:
實際
"_id" : ObjectId("59b94fc900fcb397d6acd5ba"),
"shows" : [
{
"mname" : "bareily ki barfi",
"timings" : [
10,
13,
15,
17,
21
]
}
]
"_id" : ObjectId("59b9501600fcb397d6acd5bb"),
"shows" : [
{
"mname" : "bareily ki barfi",
"timings" : [
10,
13,
14,
16,
22
]
}
]
但是,因爲它是觀察到的,它顯示這些元件也沿,這是不滿足條件(如10,13)。我只想要顯示那些滿足結果的元素。 我希望以下列方式輸出。
預計
"_id" : ObjectId("59b94fc900fcb397d6acd5ba"),
"shows" : [
{
"mname" : "bareily ki barfi",
"timings" : [
15,
17,
21
]
}
]
"_id" : ObjectId("59b9501600fcb397d6acd5bb"),
"shows" : [
{
"mname" : "bareily ki barfi",
"timings" : [
16,
22
]
}
]
這是我甚至使用$過濾後得到的輸出,但它工作得很好,如果我給手動輸入數組。
db.moviedb.aggregate([ { $project: { " shows.timings":
{ $filter: { input: "$shows.timings",
as: "item",
cond: { $gte: [ "$$item", 22 ] } } } } } ])
"_id" : ObjectId("59b94fc900fcb397d6acd5ba"), " shows" : { "timings" : [ [
10, 13, 15, 17, 21 ], [ 8, 11, 14, 17, 20, 22 ] ] } }
"_id" : ObjectId("59b9501600fcb397d6acd5bb"), " shows" : { "timings" : [ [
10, 13, 14, 16, 22 ], [ 8, 9, 14, 16, 20, 23 ] ] } }
"_id" : ObjectId("59b9506500fcb397d6acd5bc"), " shows" : { "timings" : [ [
9, 11, 15, 18, 20 ], [ 8, 9, 14, 16, 20, 23 ] ] } }
需要做什麼? 請幫忙。謝謝:)
看起來你可以用'$ filter'做你想要的東西 - https://docs.mongodb.com/manual/reference/operator/aggregation/filter/ –
的[查找雙可能的複製嵌套數組MongoDB](https://stackoverflow.com/questions/29071748/find-in-double-nested-array-mongodb) – Veeram
@realseanp,我用$過濾器,仍顯示不滿足條件的值。我只是想顯示滿足條件的元素只在shows.timings數組 – radhika