您的当前位置:首页正文

mongodb查询内嵌文档

2020-09-29 来源:好走旅游网
mongodb查询内嵌⽂档

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\查询不出结果。因此,这正是我们想要的。

因篇幅问题不能全部显示,请点此查看更多更全内容