2

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.

2
  • 2
    Read the docs docs.mongodb.com/manual/tutorial/query-array-of-documents Commented Oct 24, 2018 at 7:50
  • MsgSchema.find({ "streamer.streamer_username" : streamer_name, "streamer.streams.id": {"$in": response.data[0].id}}, (err, found) =>{}}) Worked. Thank you. Commented Oct 24, 2018 at 7:58

1 Answer 1

4

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" } });
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.