Soh*_*ham 6 crud mongodb mongodb-query
我有一个包含 2 个结构文档的“名称”集合:
文档 1:
{
a: 1
b : [{name:"AAA",age:10},
{name:"BBB",age:12},
{name:"CCC",age:13}]
}
Run Code Online (Sandbox Code Playgroud)
文档 2:
{
a: 2
b : [{name:"DDD",age:14},
{name:"EEE",age:15},
{name:"FFF",age:16}]
}
Run Code Online (Sandbox Code Playgroud)
由于我是 MongoDB 的新手,我试图找出使用 $elemMatch 运算符与不使用它的区别。基本上,我试图查询并找到第一个名称为 AAA 且年龄为 10 岁的文档(文档 1)。因此,使用 $elemMatch,我的查询如下所示:
db.name.find({b: {$elemMatch :{name:"AAA",age:10}}})
Run Code Online (Sandbox Code Playgroud)
这个查询工作得很好,但我的问题是,当我可以这样查询时,有什么需要使用这个查询:
db.name.find({b:{name:"AAA",age:10}})
Run Code Online (Sandbox Code Playgroud)
我相信 $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}]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6872 次 |
| 最近记录: |