【问题标题】:How To Search Inside an Object in MongoDB using mongoose?如何使用 mongoose 在 MongoDB 中的对象内部进行搜索?
【发布时间】:2015-06-29 17:06:35
【问题描述】:

这里是'Conversation'集合的对象结构

{
    "_id" : ObjectId("5536028a33e52be617b8bb2a"),
    "messages" : [
        {
            "from" : ObjectId("5534c58ac2bda5fe18cfcb97"),
            "_id" : ObjectId("5536028a33e52be617b8bb2b"),
            "created" : ISODate("2015-04-21T07:55:54.572Z"),
            "read" : false,
            "message" : "dummy message",
            "participants" : [
                ObjectId("5534c58ac2bda5fe18cfcb97"),
                ObjectId("5530af38576214dd3553331c")
            ]
        }
    ],
    "participants" : [
        ObjectId("5530af38576214dd3553331c")
    ],
    "__v" : 0
}

使用下面的代码我得到了对象

collection.findById(id,function(err,conv){})

现在使用这个对象,我需要查找参与者数组(在对象内部)是否包含对象 ID '5530af38576214dd3553331c'。如何使用猫鼬在对象内部查找?

【问题讨论】:

    标签: arrays mongodb express mongoose


    【解决方案1】:

    您可以使用find() 方法,您的查询对象将具有idparticipants 字段:

    var mongoose = require("mongoose");
    var participant_id = mongoose.Types.ObjectId("5530af38576214dd3553331c");
    var query = { _id: id, participants: participant_id };
    
    Conversation.find(query)
                .exec(function(err, conv){
                   // Handle err
                });
    

    【讨论】:

    • 非常感谢chridam :) 它确实有效:) 另一个问题 集合中有很多对象,每个对象都有参与者数组。我想在“特定”数组中列出具有特定元素(此处为对象)的对象。我该怎么做?
    • 至于您的其他问题,我不确定我是否正确,但如果您可以创建一个具有足够详细信息的新问题(例如示例文档和预期结果),那就太好了查询。
    【解决方案2】:

    你可以只用猫鼬find

    collection.find({participants: <your participant id here>}).exec(callback)
    

    【讨论】:

      猜你喜欢
      • 2012-02-06
      • 2013-04-06
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多