我有多个文件的数据:
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e486"),
"empId" : "1"
"type" : "WebUser",
"city" : "Pune"
}
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e487"),
"empId" : "2"
"type" : "Admin",
"city" : "Mumbai"
}
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e488"),
"empId" : "3"
"type" : "Admin",
"city" : "Pune"
}
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e489"),
"empId" : "4"
"type" : "User",
"city" : "Mumbai"
}
Run Code Online (Sandbox Code Playgroud)
我想根据我的多个条件获取数据:
condition 1:- {"type" : "WebUser", "city" : "Pune"}
condition 2:- {"type" : "WebUser", "city" : "Pune"} & {"type" : "User", "city" : "Mumbai"}
Run Code Online (Sandbox Code Playgroud)
运行条件1时我想得到以下结果:
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e486"),
"empId" : "1"
"type" : "WebUser",
"city" : "Pune"
}
Run Code Online (Sandbox Code Playgroud)
当我跑第二个条件时:
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e486"),
"empId" : "1"
"type" : "WebUser",
"city" : "Pune"
}
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e489"),
"empId" : "4"
"type" : "User",
"city" : "Mumbai"
}
Run Code Online (Sandbox Code Playgroud)
我想通过一个查询得到上面的结果,
目前我使用下面的聚合查询,
db.emp.aggregate([
{ $match: { '$and': [
{"type" : "WebUser", "city" : "Pune"},
{"type" : "User", "city" : "Mumbai"}
] } },
{ $group: { _id: 1, ids: { $push: "$empId" } } }
])
Run Code Online (Sandbox Code Playgroud)
以上查询工作为第一个条件而对其他条件失败.请帮我.
小智 11
您可以使用 mongo db$or
运算符。
db.emp.find({ $or: [
{ "type": "WebUser", "city": "Pune" },
{ "type": "user", "city": "Mumbai"}
]})
Run Code Online (Sandbox Code Playgroud)
您可以在数组中传递条件。
更多参考请参阅 mongo 文档
对于第二个条件,您可以$in
在查询中使用运算符:
db.emp.find({
"type" : { "$in": ["WebUser", "User"] },
"city" : { "$in": ["Pune", "Mumbai"] }
})
Run Code Online (Sandbox Code Playgroud)
如果要在聚合中使用:
db.emp.aggregate([
{
"$match": {
"type" : { "$in": ["WebUser", "User"] },
"city" : { "$in": ["Pune", "Mumbai"] }
}
},
{ "$group": { "_id": null, "ids": { "$push": "$empId" } } }
])
Run Code Online (Sandbox Code Playgroud)
或者只是使用该distinct()
方法返回与上述查询匹配的不同empIds数组:
var employeeIds = db.emp.distinct("empId", {
"type" : { "$in": ["WebUser", "User"] },
"city" : { "$in": ["Pune", "Mumbai"] }
});
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找 AND 运算符
这个例子检查一个字段存在和为空
db.getCollection('TheCollection').find({
$and: [
{'the_key': { $exists: true }},
{'the_key': null}
]
})
Run Code Online (Sandbox Code Playgroud)
此示例检查字段是否具有“value1”或“value2”
db.getCollection('TheCollection').find({
$or: [
{'the_key': 'value1'},
{`the_key': 'value2'}
]
})
Run Code Online (Sandbox Code Playgroud)
当只检查 null 时,返回包含不存在的字段和值为 null 的字段
db.getCollection('TheCollection').find({'the_key': null})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13359 次 |
最近记录: |