我的数据包含多个文档:
{
"_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"
}
我要根据我的多个条件获取数据:
condition 1:- {"type" : "WebUser", "city" : "Pune"}
condition 2:- {"type" : "WebUser", "city" : "Pune"} & {"type" : "User", "city" : "Mumbai"}
当运行条件1时,我希望得到以下结果:
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e486"),
"empId" : "1"
"type" : "WebUser",
"city" : "Pune"
}
运行第二个条件时:
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e486"),
"empId" : "1"
"type" : "WebUser",
"city" : "Pune"
}
{
"_id" : ObjectId("57b68dbbc19c0bd86d62e489"),
"empId" : "4"
"type" : "User",
"city" : "Mumbai"
}
我希望通过一个查询得到上面结果,
目前我使用下面聚合查询,
db.emp.aggregate([
{ $match: { '$and': [
{"type" : "WebUser", "city" : "Pune"},
{"type" : "User", "city" : "Mumbai"}
] } },
{ $group: { _id: 1, ids: { $push: "$empId" } } }
])
以上第一个条件的查询工作&其他条件的查询工作失败。请帮助我。
4条答案
按热度按时间mrfwxfqh1#
对于第二个条件,可以在查询中使用**
$in
**运算符,如下所示:如果要在聚合中使用:
或者简单地使用
distinct()
方法返回与上面的查询匹配的不同empId的数组,如下所示:velaa5lx2#
如果要查找AND运算符
此示例检查字段是否存在且为空
本示例检查字段是否具有'value1'OR'value2'
仅检查空值时,返回包含不存在的字段以及值为空的字段
bnl4lu3b3#
您可以使用mongo db
$or
运算符。您可以在数组中传递条件。
更多参考see mongo docs
daolsyd04#
1.显示“StudName”中的值为“Ajay Rathod”的文档。
数据库.学生.find({name:“ajay rathod”})
1.仅检索学生姓名和年级。
db.学生.find({},{姓名:1,年级:1,_id:0})