我正在尝试基于包含元数据数组的文档设计查询。
book = { 标题:字符串, metaData:[字符串] }
要查找所需的书,我还有另一个包含多个元数据术语的搜索字符串数组。数组的长度可以根据存在的元数据搜索词的数量而变化。如何查询仅查找包含所有指定的元数据搜索词的图书?
示例:
book1-自然,树木,昆虫,雾气,音乐 book2-音乐,艺术,体育
使用[音乐,运动]的元数据进行搜索将产生book2。
如何最有效地设计此查询?我可以这样做并避免嵌套查询吗?任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用$all
运算符来执行此操作。
从文档中:
相反,如果您希望找到一个同时包含元素“ red”和“ blank”的数组,而不考虑该数组中的顺序或其他元素,请使用$ all运算符:
db.inventory.find( { tags: { $all: ["red", "blank"] } } )
答案 1 :(得分:0)
您可以使用...
<profiles>
<profile>
<id>default</id>
<activation><activeByDefault></activeByDefault></activation>
</profile>
<profile>
<id>eclipse</id>
<properties>
<my.library.version>[1,)</my.library.version>
</properties>
</profile>
</profiles>
...
来获取包含给定元数据字符串的所有文档。
尝试:
$all
详细了解有关$all official documentation的信息。