Node.js 查找带条件的查询
我有一个文档集合,其中每个文档都具有以下属性:Node.js 查找带条件的查询,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个文档集合,其中每个文档都具有以下属性:userId,权限 如何使用findOne查询返回具有userId=41和permissions=admin或permissions=op-admin的文档 我尝试了以下查询,但它不返回任何结果 User.findOne( { 'userId': 42 }, { $and: [ { $or: {'permissions': 'admin'} }, { $o
userId
,权限
如何使用findOne
查询返回具有userId=41
和permissions=admin
或permissions=op-admin
的文档
我尝试了以下查询,但它不返回任何结果
User.findOne(
{
'userId': 42
},
{
$and: [
{
$or: {'permissions': 'admin'}
},
{
$or: {'permissions': 'op-admin'}
}
]
}, function(err, doc) {
if(err) {
console.log(doc);
console.log(err);
}
});
有什么我做得不对吗?试试:
User.find({
$and: [ {'userId': 42 } ,
{ $or: [ {'permissions': 'admin'}, {'permissions': 'op-admin'} ] }
]})
.find({“userId”:42,“permissions”:{“$in”:['admin','op-admin']}})
。中的$基本上是$或
的缩写,但应用于同一个键。实际上,您几乎不需要使用简练的$和。谢谢robert@NeilLunn还需要用户ID
;D@NeilLunn我尝试了你的代码,还向查询中添加了userId
,效果非常好。你应该把这条评论作为一个答案发表。我知道它是有效的。你需要理解的是“为什么它有效,为什么你尝试过的却没有”。查看操作符的文档,发现$或
实际上需要一个“列表”,您没有给出,因此出现了语法错误。然后查看$in
和$and
的实际文档,了解您在这里使用$in
的原因,以及$and
的实际用法。比将答案标记为正确的语法更正所花费的时间更有用。