Как проверить, содержит ли поле массива уникальное значение или другой массив в MongoDB?
теперь я использую mongodb.
У меня есть коллекция blogpost, и blogpost имеет теги, которые являются массивом, например
blogpost1.tags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5']
blogpost2.tags = ['tag2', 'tag3']
blogpost3.tags = ['tag2', 'tag3', 'tag4', 'tag5']
blogpost4.tags = ['tag1', 'tag4', 'tag5']
Как я могу сделать эти ищу
- содержится 'вкладка 1'
- содержит ['tag1', 'tag2'],
- содержит любой из ['tag3', 'tag4']
2 ответов
попробуйте это:
db.blogpost.find({ 'tags' : 'tag1'}); //1
db.blogpost.find({ 'tags' : { $all : [ 'tag1', 'tag2' ] }}); //2
db.blogpost.find({ 'tags' : { $in : [ 'tag3', 'tag4' ] }}); //3
мой опыт заключается в том, что для (2) следующее решение намного быстрее, чем с "$all":
db.blogpost.find({ $and: [ {tags: 'tag1'} ,{tags: 'tag2'} ] });
но, честно говоря, я не знаю, почему. Мне было бы интересно, если кто знает.