我有一个集合“名称”,其中包含 2 个结构文档:
文档 1:
{
a: 1
b : [{name:"AAA",age:10},
{name:"BBB",age:12},
{name:"CCC",age:13}]
}
文档 2:
{
a: 2
b : [{name:"DDD",age:14},
{name:"EEE",age:15},
{name:"FFF",age:16}]
}
因为我是 MongoDB 的新手,所以我试图找出使用 $elemMatch 运算符和不使用它的区别。基本上,我正在尝试查询并找到名称为 AAA 且年龄为 10 岁的第一个文档 (doc 1)。因此,使用 $elemMatch,我的查询如下所示:
db.name.find({b: {$elemMatch :{name:"AAA",age:10}}})
这个查询工作得很好,但我的问题是,当我可以像这样查询时,为什么需要使用这个查询:
db.name.find({b:{name:"AAA",age:10}})
我确信 $elemMatch 应该有一些原因,只是想找出不同之处。提前感谢您的回复!!!
最佳答案
关键区别在于第二个查询(没有 $elemMatch
)将只匹配 b
数组中仅包含这两个字段的元素,并且仅在订单。
所以第一个查询将匹配以下两个文档,但第二个查询不会:
{
a: 1
b: [{name: "AAA", age: 10, city: 'New York'},
{name: "BBB", age: 12, city: 'Paris'},
{name: "CCC", age: 13, city: 'London'}]
}
{
a: 1,
b: [{age: 10, name: "AAA"},
{name: "BBB", age: 12},
{name: "CCC", age: 13}]
}
关于mongodb - MongoDB 中的 $elemMatch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41725419/