【问题标题】:Mongoose findOne by reference returns nullMongoose findOne 通过引用返回 null
【发布时间】:2018-08-09 00:48:30
【问题描述】:

我在事件集合中有一些事件,在用户集合中有一些用户。 我有另一个集合中的事件和用户的映射。该集合中的 event_id 字段是对事件集合 (ObjectId) 的引用。但是当我使用以下命令搜索架构时,我得到 null 作为响应

db.eventusers.findOne({event_id :'57988cd30e9811750324c080'})

返回null

另一方面,当我使用不是参考的用户字段进行搜索时,只是一个包含用户 ID 的字符串,我得到的结果如下。

db.eventusers.findOne({user_id :"578cdcdd56eaec041b6caf3e"})
{
    "_id" : ObjectId("57988d190e9811750324c081"),
    "created_at" : "1469615385595",
    "updated_at" : "1469615618502",
    "user_id" : "578cdcdd56eaec041b6caf3e",
    "event_id" : ObjectId("57988cd30e9811750324c080"),
    "deleted" : false,
    "invited" : false,
    "host" : true,
    "status" : -1,
    "__v" : 0
} 

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我已经找到了解决方案。如果该字段在 Mongoose Schema 中定义为Schema.Types.ObjectId,那么在查询 id 中应该是 ObjectId 而不是 String。所以不是查询{event_id :'57988cd30e9811750324c080'},而是{event_id :ObjectId('57988cd30e9811750324c080')}

    db.eventusers.findOne({event_id :ObjectId('57988cd30e9811750324c080')})
    {
        "_id" : ObjectId("57988d190e9811750324c081"),
        "created_at" : "1469615385595",
        "updated_at" : "1469615618502",
        "user_id" : "578cdcdd56eaec041b6caf3e",
        "event_id" : ObjectId("57988cd30e9811750324c080"),
        "deleted" : false,
        "invited" : false,
        "host" : true,
        "status" : -1,
        "__v" : 0
    }
    

    【讨论】:

    • 解释你的答案,其他用户会觉得这很混乱。
    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2019-09-11
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多