If I have a field in a mongodb document which has an array, for example:
"tags" : [ "tag", "etc1", "etc2", "etc3" ]
Is there a way that I can select that document if it contains the element 'etc1'?
If I try using the query:
db.coll.find({"tags" : { $elemMatch: { value0: 'etc1'} }})
but I need to know the position of the element in the array, which I don't know.
I have also tried:
db.coll.find({"tags" : { $elemMatch: 'etc1' }})
but it needs to be an object. Is there any way of doing this?
NB I am using mongoose but I wasn't sure how to construct the query
Use the $in
operator as described in this question or this other question and as described in the mongodb docs and can be accessed in mongoose .
With it, you'll have a query that looks something like this... remembering that you must pass an array when using $in :
db.coll.find({"tags" : { $in : ['etc1'] } } );
除了使用$ in运算符,您还可以使用$ all运算符,例如:
db.col1.find({"tags":{$all :["etc1"]}})
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.