我正在编写以下查询,以根据2个条件检索记录。执行查询给我错误:
> db.employee.find({age:{$lt:32}},{salary:{$lt:40000}})
下面是错误信息:
Error: error: {
"ok" : 0,
"errmsg" : "Expression $lt takes exactly 2 arguments. 1 were passed in.",
"code" : 16020,
"codeName" : "Location16020"
}
要执行基于两个条件的查找查询,需要在同一个查询对象中执行。
注意你在做:
find({obj1},{obj2}
但是find方法的第二个参数是用于投影(docs)
所以你需要这个查询:
db.collection.find({
"age": {
"$lt": 32
},
"salary": {
"$lt": 40000
}
})
注意只有一个对象有两个字段:age
和salary
。
类似find( { age:{}, salary:{}} )
。
例子
看来你想实现AND条件。您必须将所有条件写在单宾语子句{}中,并用逗号分隔条件。如:
db.employee.find({ age:{$lt:32}, salary:{$lt:40000}});