mongodb查询内嵌⽂档
假设有这样⼀个⽂档:db.XXX.remove();
db.XXX.insert({\"id\":1, \"members\":[{\"name\":\"BuleRiver1\{\"name\":\"BuleRiver3\
不能使⽤db.XXX.find({\"members\":{\"name\":\"BuleRiver1\进⾏查询,查询的结果是空集。只有完全匹配⼀个的时候才能获取到结果,因此:
db.XXX.find({\"members\":{\"name\":\"BuleRiver1\
可以得到结果。
如果把键值进⾏颠倒,也得不到结果:
db.XXX.find({\"members\":{\"age\":27, \"name\":\"BuleRiver1\
得到的结果是空集我们这样查询:
db.XXX.find({\"members.name\":\"BuleRiver1\是可以查询出结果的。如果需要两个属性:
db.XXX.find({\"members.name\":\"BuleRiver1\也可以查询出结果。
我们再进⾏破坏性尝试:
db.XXX.find({\"members.name\":\"BuleRiver1\也可以查询出结果。
不过我们应该注意到:BuleRiver1是数组中第⼀个元素的键值,⽽23是数组中第⼆个元素的键值,这样也可以查询出结果。
对于我们的⼀些应⽤来说,这显然不是我们想要的结果。所以我们应该使⽤$elemMatch:db.XXX.find({\"members\":{\"$elemMatch\":{\"name\":\"BuleRiver1\可以查询出结果,⽽
db.XXX.find({\"members\":{\"$elemMatch\":{\"name\":\"BuleRiver1\查询不出结果。因此,这正是我们想要的。
因篇幅问题不能全部显示,请点此查看更多更全内容