我正在寫一個使用聚合管道的Mongo查詢。在彙總期間,我需要$unwind
其中的一個字段。但是,我不希望$unwind
排除具有該字段的零長度數組的條目,因爲我仍然需要它們進一步向下。
我的字段名爲items
,它是一個對象數組,它們各自包含兩個值:quantity
和price
。這裏是我的蒙戈查詢的片段至今:
db.MyCollection.aggregate([
{$match: ... },
{$project: ... },
// put another $project here to retain zero-length values? how to format it?
{$project: {
_id: "$$ROOT",
items: {
$ifNull: [
{
$literal: {
quantity: 0,
price: 0
}
}
]
}
}
},
{$unwind: "$items"},
{$group: ... },
{$project: ... },
...
]);
正如你所看到的,這已經處理的情況下的文件沒有出現在items
場可言,在這種情況下,增加了它,並給出這是一個值得放鬆的空值。
但是沒有處理的是文件已經有items
字段存在,但它是空白的。我想我可以使用$cond
和$size
的一些組合來明確檢查另一個$project
中的零的大小,然後在這種情況下替換相同的文字,但$if
需要一個布爾值,所以我不太確定如何格式化。
你是什麼意思'項目是blank'? '項目:[]'?或項目:「」? – BatScream 2014-11-22 22:37:16
我的意思是'物品:[]' – SoaperGEM 2014-11-22 22:37:40