我正在努力寻找一种使用以下标准执行复合MongoDB find()
的好方法:
在我的特定情况下,我有一个users
的集合,其中包含用户列表及其相关权限。它还包含guest
伪用户的特殊条目,其中包含默认权限。如果没有发生确切的用户匹配,则此guest
文档是需要返回的文档。
我已尝试使用{$or: [ { id: "bob" }, {id: "guest" } ]}
以及{ id: { $in: [ "bob", "guest" ] } }
,但这两个都按顺序搜索集合并返回" bob"或"客人"取决于首先插入的。
有没有办法明确说明查找bob
或作为后备,请返回guest
文档?
请记住,这将从Node.js执行,因此我正在寻找一个干净的&将此文件卸载到MongoDB的简单方法。
我意识到这可以作为两个查询完成,但我想尽可能避免这种情况。
谢谢!
答案 0 :(得分:0)
如果您插入guest
作为第一个对象,那么通过_id组合limit
和sort
,您可以解决此问题!
答案 1 :(得分:0)
我认为不是使用find({}),而是使用聚合,而$ in和$ cond运算符可以解决您的问题。 你可以参考这个链接 - > https://docs.mongodb.com/v3.2/reference/operator/aggregation/cond/