我苦苦寻找执行一种化合物的MongoDB find()
以下标准的一个好方法返回一个文件:根据搜索条件MongoDB的:如果另一个不存在
- 查询将匹配一个文件
- 如果找到匹配项,该文件将被退回
- 如果找不到匹配项,则将返回其他文件。这第二个文档将匹配另一组标准
- 该查询理想情况下会返回一个记录,无论如何。
在我的特殊情况下,我收集了一个users
,其中包含用户列表及其关联的权限。它还包含一个包含默认权限的guest
伪用户的特殊条目。这个guest
文档是在没有发生确切的用户匹配时需要返回的文档。
我已经尝试过使用{$or: [ { id: "bob" }, {id: "guest" } ]}
以及{ id: { $in: [ "bob", "guest" ] } }
,但是这两个搜索按顺序收集,并且将返回“bob”或“guest”,具体取决于先插入哪一个。
有没有办法明确说找到bob
或作为后备,返回guest
文件?
请记住,这将从Node.js执行,因此我正在寻找一个干净的&简单的方法将其卸载到MongoDB。
我意识到这可以做为两个查询,但我想尽可能避免这种情况。
谢谢!
嗯,我不知道'$ cond'存在。这可能只是做到了,尽管最终的结果会很长。我不知道是否有一种替代方式没有聚合... – mstubbies