Let's say I have the following documents:
{
title: 'Some title',
items: [1,5,9,4]
}
{
title: 'Some title',
items: [5,7]
}
{
title: 'Some title',
items: [1,2]
}
I need to get a documents where items have 5. So I make the following query in mongoose:
Model.find({items: {$in: [5]}}, function (err, docs) {
// docs.length == 2
});
And I'm getting it. But I've found that if I make the follows query then I get the same:
Model.find({items: 5}, function (err, docs){
// docs.length == 2
});
Is is correct to use the second approach to find docs in my case?
Use $in
when you want to find the docs where items
contains any one of a set of values; if you want the docs where items
contains a specific value, use a simple query object like {items: 5}
.
So while, as you found, you can use $in
to match against a single value, it's more naturally expressed as Model.find({items: 5}, ...);