在我的收藏中,我有以下文件:
{
"_id": ObjectID("5725290dacb36ae775e25dbe"),
"prop": {
"giver_name": "Random Tester",
"giver_id": ObjectID("56b5e87e1827640215c5c055"),
"giver_url": "random-tester"
},
"owner": ObjectID("568fbeef9823be8e105afa46"),
"title": "testing",
"content": "hgj jhj hgjh gjhgjhgj hgjhg jhg",
"type": "recommendation",
"modified": ISODate("2016-04-30T21:52:13.517Z"),
"created": ISODate("2016-04-30T21:52:13.518Z"),
"privacy": {
"all": true
},
"shares": [],
"interests": [],
"comments": 0,
"acknowledgements": [],
"__v": 0
}
我正在尝试使用mongoose查询获取上述文档
Post.findAsync({type:'recommendation','prop.giver_id':"56b5e87e1827640215c5c055" }).then(function(count, err){
console.log('Recommendation count: ',count," : ",userId," : ",err);
return res.status(200).json(count);
});
上面的查询给出了一个空白的结果集,但是如果我删除prop.giver_id
部分,我会得到所有结果。我知道该字段是ObjectId
但是据我所知,查找查询中的字符串效果非常好。那么我做错了什么?
答案 0 :(得分:1)
Mongoose会根据您的架构定义在您的查询中投放字段,因此当这样的查询无效时,通常是因为架构定义与您的实际文档不匹配。
在这种情况下,确保giver_id
在架构中定义为:
giver_id: mongoose.Schema.ObjectId