我無法查詢此類資料
[
{ev:1,
image:[{id:24,name:'ads1'},{id:25,name:'ads2'},{id:26,name:'ads4'},{id:27,name:'ads3'}]
},
{ev:1,
image:[{id:29,name:'ads1'},{id:23,name:'ads2'},{id:34,name:'ads4'},{id:50,name:'ads3'}]
}
]
這是我的查詢
var data = schema.find( {
$and: [
{
ev: 1
},
{
'image.id': {
$in: [26,29,50,34]
}
}
]
} , 'ev image' )
我需要什么結果
[
{ev:1,
image:[{id:26,name:'ads4'}]
},
{ev:1,
image:[{id:29,name:'ads1'},{id:34,name:'ads4'}, {id:50,name:'ads3'}]
}
]
我正在使用月光
但我不斷取回整個影像陣列
我基本上需要只用我想要的 image.id 過濾的影像物件
PS還有更多的ev 1,2,3 ....因此我只需要在我提供的ev中找到
有人可以幫我解決這個問題嗎
我是 mongodb 新手
uj5u.com熱心網友回復:
Find 用于保留或拒絕完整的檔案(find 也有一個專案,但通常對于我們使用聚合運算子的轉換)。下面是只保留部分陣列的聚合。
詢問
- 匹配
ev=1 - 過濾影像并僅保留陣列中包含的影像
[26, 29, 50, 34] - 如果您愿意,可以添加另一個匹配項以過濾掉具有空陣列的檔案(沒有 id 是陣列的成員)
PlayMongo
aggregate(
[{"$match": {"ev": {"$eq": 1}}},
{"$set":
{"image":
{"$filter":
{"input": "$image",
"cond": {"$in": ["$$this.id", [26, 29, 50, 34]]}}}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457736.html
