我苦苦尋找執行一種化合物的MongoDB find()
以下標準的一個好方法返回一個文件:根據搜索條件MongoDB的:如果另一個不存在
- 查詢將匹配一個文件
- 如果找到匹配項,該文件將被退回
- 如果找不到匹配項,則將返回其他文件。這第二個文檔將匹配另一組標準
- 該查詢理想情況下會返回一個記錄,無論如何。
在我的特殊情況下,我收集了一個users
,其中包含用戶列表及其關聯的權限。它還包含一個包含默認權限的guest
僞用戶的特殊條目。這個guest
文檔是在沒有發生確切的用戶匹配時需要返回的文檔。
我已經嘗試過使用{$or: [ { id: "bob" }, {id: "guest" } ]}
以及{ id: { $in: [ "bob", "guest" ] } }
,但是這兩個搜索按順序收集,並且將返回「bob」或「guest」,具體取決於先插入哪一個。
有沒有辦法明確說找到bob
或作爲後備,返回guest
文件?
請記住,這將從Node.js執行,因此我正在尋找一個乾淨的&簡單的方法將其卸載到MongoDB。
我意識到這可以做爲兩個查詢,但我想盡可能避免這種情況。
謝謝!
嗯,我不知道'$ cond'存在。這可能只是做到了,儘管最終的結果會很長。我不知道是否有一種替代方式沒有聚合... – mstubbies