我有以下文件
{
name: 'John',
Address :'street 1 '
},
{
name: 'Jane',
Address :'street 2 '
},
{
name: 'Smith',
Address :'street 3 '
}
我想在mongo聚合管道中搜索具有不同价位的多个文档。
这意味着名称=('John','Smith')。我期望结果是
{
name: 'John',
Address :'street 1 '
},
{
name: 'Smith',
Address :'street 3 '
}
我的代码是
db.articles.aggregate($match: { $or: [{ name: 'John' }, { name: 'Smith' }]);
这是一个空值。是否可以这样获取文档?
答案 0 :(得分:4)
[{
$match: {
name: {
$in: [ 'John' ,'Smith' ]
}
}]
此查询返回 name
字段匹配给定数组的任何 $in
项的所有匹配项:John 或 Smith。
答案 1 :(得分:1)
您需要使用运算符$in
$ in运算符选择域值所在的文档 等于指定数组中的任何值。
[{
$match: {
name: {
$in: ['John', 'Smith']
}
}
}]
答案 2 :(得分:0)
查询中缺少方括号对。
db.articles.aggregate([{$ match:{$ or:[{name:'John'},{name:'Smith'}]}}])))
但是您可以将查询减少到下面
db.articles.aggregate([{$ match:{name:{$ in:['John','Smith']}}}]));