[英]Using $match twice through mongo aggregation pipeline
我在嘗試從mongoDB聚合管道中獲取一些結果時遇到了一個問題。 這是我的數據庫的樣子:
var dbSchema = mongoose.Schema({
identity: Number,
parametres: {
style: {
fuel: [styleSchema],
gasoline: [styleSchema],
},
},
這是styleSchema的樣子:
var styleSchema = new mongoose.Schema({
date: Date,
value: Number,
type: String,
});
我正在嘗試提取“燃料”和“汽油”中屬於某種“類型”的所有對象。
我試圖用concatArray將它們組合在一個唯一的數組中,然后通過以下方式匹配我想要的“類型”:
db.aggregate([
{$match:
{'identity':3,
}},
{$project: {all: {$concatArrays: ['$parametres.style.fuel','$parametres.style.gasoline']} }},
{$match: {'$all.type': 'example'}},
在第二次嘗試匹配之前,我有一個唯一的數組(“ all”),並且嘗試匹配其中的某些內容,但是沒有任何效果(我也嘗試了“ all.type”)...
我可能是個初學者,所以我可能誤解了我必須使用“匹配”查詢的方式,因此,感謝您的寶貴時間和解答,
亞瑟
db.aggregate([
{
$match:{identity:3}
},
{
$project: {all: {$concatArrays: ['$parametres.style.fuel','$parametres.style.gasoline']} }
},
{$unwind: "$all"},
{$match: {"all.type": 'example'}},
{$group : {_id: null, all:{$push:"$all"}}}
])
可能您正在嘗試執行此類操作。 在聚合操作中, $
是在右側用:
提字段名稱和左側提操作。 因此,當您在左側使用“ $ all.type”時, MongoDB
會將其視為在Mongodb運算符列表中不可用的運算符。
另一件事是,當您對array
進行任何查詢時。 如果至少一個元素符合條件,則Mongodb會發回完整數組。 因此,在執行任何查詢之前,我們需要使用$unwind
運算符對數組進行解構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.