1
我有一個相當複雜的文檔,但這裏是我可以放在這裏的示例。從基於過濾器的數組投影文件cond
我有「地址」陣列上的多個地址的文件類似
addresses : [
{'code': '1', line:'abc town'}, {'code':'2', line:'bcd town'},{'code':'3', line: 'another town'}
]
,我想拉基於代碼的文檔。例如碼:1然後就拉這一個文件,如果不看是否有碼:2,是再拉這個文件,否則扯別的可
我的文檔結構看起來像這樣
[
_id:123
fn: 'name',
addresses : [
{'code': '1', line:'abc town'}, {'code':'2', line:'bcd town'},{'code':'3', line: 'another town'}
]
]
和我寫的查詢是
db.collection.aggregate([{$match: {'_id':123}},
{$project: {
"fn" :1,
"addresses": {$filter: {
input: '$addresses',
as: 'address',
cond: {$eq: ['$$address.code', '1']}
}},
_id: 0
}}
它工作時的代碼是等於1(明顯),但我不知道該怎麼辦,「如果其他」條件我需要的我上面解釋過,即如果代碼== 1,然後只拉該文檔,如果不看看代碼== 2,然後拉動該文檔,如果不是所有其他東西拉可用。
我知道這是很複雜的解釋,但我認爲我需要一些修復我的$過濾條件。
任何幫助,將不勝感激
這應該讓你在正確的軌道上: https://docs.mongodb.com/manual/reference/operator/aggregation/cond/ – Tiramisu
嘿感謝您的鏈接。我確實認爲我處於正確的軌道,這只是我無法做到$過濾條件中的if else。如果你能糾正我所犯的錯誤。 – JBone
JohnnyHK ..有什麼機會,你看過這個嗎? – JBone