您好,我有一个mongodb find()问题查询。我正在尝试在同一对象数组中查找具有两个特定ID的所有文档。
样本文档结构:
文件1
{
gameId:394028,
people: [{
id: 5,
mapSide: 'left'
},{
id: 4,
mapSide: 'right'
},{
id: 1,
mapSide: 'right'
},{
id: 2,
mapSide: 'left'
}]
}
文件2
{
gameId:394028,
people: [{
id: 7,
mapSide: 'left'
},{
id: 9,
mapSide: 'right'
},{
id: 4,
mapSide: 'right'
},{
id: 1,
mapSide: 'left'
}]
}
我将如何在同一人员数组中获取ID为5和4的所有文档?我已经试过这个shell命令:
db.COLLECTION.find({"people.id":5, "people.id":4}); //should return doc 1
但是我还没有得到任何结果。我还打算仅在它们具有不同的地图侧时才找到ID-我已经尝试过:
db.COLLECTION.find({
people: {$elemMatch:{id:4, mapSide:"left"},
people: {$elemMatch:{id:1, mapSide:"right"}
},{
people: {$elemMatch:{id:4, mapSide:"right"},
people: {$elemMatch:{id:1, mapSide:"left"}
}); //Should return doc 2, because doc 1 has both mapSide as 'right'
如果我可以帮忙解决上述任何一个问题,那就太好了!谢谢。
您可以使用以下查询查找people
数组包含元素id == 4
和的元素的所有文档id == 5
:
db.COLLECTION.find( { $and : [ { 'people.id' : 4 }, { 'people.id' : 5 } ] } )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句