基本上我试图创建一个布尔字段"焦点"在查询中,如果字段为" focusStores"包含某个商店。
实施例: 如果作为以下焦点的产品存储 - [" AAA"," BBB"]并且如果我使用商店" AAA"作为搜索条件,焦点字段应该是真实的。
这是我目前最好的尝试。任何帮助将不胜感激!
db.getCollection('Products').aggregate([
{
$project: {
sku: 1,
focusStores : 1,
focusTmp : {$focusStores: {$in : 'AAA'}}
}
}
])
答案 0 :(得分:1)
对于MongoDB 3.2,请使用$setIsSubset
:
db.getCollection('Products').aggregate([
{
$project: {
sku: 1,
focusStores : 1,
focusTmp : { $setIsSubset: [ ["AAA"], { "$ifNull": [ "$focusStores", [] } ] }
}
}
])
您可能阅读了$in
这是一个MongoDB 3.4运算符,并且语法不正确。应该是:
db.getCollection('Products').aggregate([
{
$project: {
sku: 1,
focusStores : 1,
focusTmp : { $in: [ "AAA", { "$ifNull": [ "$focusStores", [] ] } ] }
}
}
])
但只有当你有一个支持版本时。
在这两种情况下,您都会使用$ifNull
换行以满足缺失的属性。