如何使用mongoose在MongoDB中的对象内搜索?

时间:2015-04-22 07:38:35

标签: arrays mongodb express mongoose

这是'对话'的对象结构。集合

{
    "_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'。如何使用mongoose在对象内找到?

2 个答案:

答案 0 :(得分:0)

您可以使用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
            });

答案 1 :(得分:0)

你可以使用mongoose find

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