我正在mongoDB
尝试使用以下条件执行查找请求:
" if元素包含一个包含完全包含这些元素的列表"。
通过一个例子更有意义:
{
"categories" : [
[
"dogs",
"cats"
],
[
"dogs",
"octopus"
]
]
}
我想找到一个只包含"狗"的类别的元素。和"章鱼"。
find({ 'categories' : ['dogs','octopus']})
找到元素
find({ 'categories' : ['octopus','dogs']})
找不到我的问题,因为我不在乎列表中的订单
输出将是所有元素,其类别仅包含"狗"和"章鱼"
我不确定它是否可行,但如果不是我看到的两种解决方案将按字母顺序存储(好但是如果我之后需要订单怎么办?)或存储/搜索所有可能的订单(非常难看)
答案 0 :(得分:2)
db.collection.aggregate([
{ "$unwind": "$categories" },
{ "$match": { "categories" : { "$all" : [ "dogs", "octopus" ]}}}
])
这将为您提供以下文档
{
"_id" : ObjectId("54c6685e7cdaa3f3e4dd8def"),
"categories" : [ "dogs", "octopus" ]
}