如何解决MongoDB查询不返回文档,尽管在查询数组时存在
{
"_id" : "5f341c57b156dd2fa020","currentAddress" : {
"address" : "Some number,some address","country" : "ABC","state" : "PQR","city" : "ABCD","landmark" : ""
},"languages" : [
"5d7f2536911a2e57b25b","5dfdf059fb595309c261"
]
"service" : "5dfdc486c15893250df1","specialSkills" : [
"5edf9423eab473331fec"
],"gender" : "5dfcaaaf03f86917017","agencyId" : "5f0d76de623bef03f1e","firstName" : "John","lastName" : "Doe","dob" : ISODate("1991-06-12T18:30:00.000Z"),"age" : 29
}
这是我的查询
async.waterfall([
(callback) => {
userSchema.find({
"currentAddress.city": "ABCD","gender": "5dfcaaaf03f86917017","age": {
"$lte": 30,"$gte": 20
},"languages": {
"$in": [
"5d7f2536911a2e57b25b","5dfdf059fb595309c261"
]
},"service": {
"$in": [
"5dfdc486c15893250df1"
]
},"agencyId": "5f0d76de623bef03f1e","specialSkills": {
"$in": [
"5edf9423eab473331fec"
]
}
},(err,userInfo) => {
callback(err,userInfo)
})
}
],userInfo) => {
res.json({
err: err,userInfo: userInfo
})
})
当我传递所有键值对时,它可以完美工作并返回文档,除了传递“ specialSkills ”的键值时,不返回文档,而是返回所有文档是一个空数组。对于发生了什么问题,我感到很困惑,我已经呆了几个小时了,但无法弄清楚。任何帮助都非常感谢。谢谢。
P.S-我在Robo3T中测试了查询,它工作得很好。当我在函数中调用它时,它不会返回文档。
P.P.S-我已经在瀑布模型中实现了此功能,因此我在问题中标记了node.js
解决方法
您正在进行String
比较。
"service" : ObjectId("5dfdc486c15893250df1")
是ObjectId
类型。但是查询包含
"service": {
"$in": [
"5dfdc486c15893250df1"
]
}
您需要将以上内容替换为
"service": {
"$in": [
ObjectId("5dfdc486c15893250df1")
]
}
同样适用于其他字段。