简体   繁体   中英

Mongoose find in array of objects

I have a Mongoose schema

var MessageSchema = new Schema({
    streamer: {
        streamer_username: String,
        streams: [{
            id: String,
            messages: [{
                date: String,
                username: String,
                message: String,
                song: String
            }]
        }]
    }
})

It contains an array "streams", which contains objects that have the "id" value, as you can see. I'm trying to search the DB with this query.

MsgSchema.find({ "streamer.streamer_username" : streamer_name, "streamer.streams": { "$in": {id: response.data[0].id} }}, (err, found) =>{}})

But i find nothing. Even if i remove the first "username" part, it still doesn't find anything and returns an empty array, so the problem is clearly the second part. What is wrong with my query? I can't find anything about it in the documentation.

I am late but I hope it helps other people

You can simply use .find() and inside it, you can create the specifications of the conditions on more than one field nested in an array of documents. The easiest way is:

MessageSchema.find({ "streamer.streams": { id: "XXX" } });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM