mongoose简单查找查询无法获取结果

时间:2016-04-30 23:55:02

标签: mongodb mongoose

在我的收藏中,我有以下文件:

{
    "_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但是据我所知,查找查询中的字符串效果非常好。那么我做错了什么?

1 个答案:

答案 0 :(得分:1)

Mongoose会根据您的架构定义在您的查询中投放字段,因此当这样的查询无效时,通常是因为架构定义与您的实际文档不匹配。

在这种情况下,确保giver_id在架构中定义为:

giver_id: mongoose.Schema.ObjectId