我有一个具有以下结构的文档:{_id: 'fkwjefioew', genres: [{_id: 'fewkjfewf', 'name': "Shooter"}, {...}, ...]}
我需要能够使用mongo的$ in进行查询,以查看该文档是否具有所传递参数的类型名称。例如,如果我将“ Shooter”的参数传递给查询,则我希望所有文档所属数组中的对象之一名称为“ Shooter”的所有文档。实现这一目标的最简单方法是什么?谢谢!
您可能想为此使用$elemMatch
。
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
您还可以使用mongodb点表示法,它的工作原理与您差不多,除了:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
如果genres
是数组,Mongodb知道如何解释。请记住,点符号查询有些含糊,因为name
如果该genres
属性不是数组,它也将与该属性匹配。例如,此文档将匹配:
{"genres": { "name": "Shooter" } }
在所有情况下,您都可以为数组中的name
属性建立索引,genres
并且该索引将用于查找。
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/glossary/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/query/in/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句