MongoDB:如果另一个文档不存在,则返回该文档
我正在努力找到一种执行复合MongoDBMongoDB:如果另一个文档不存在,则返回该文档,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在努力找到一种执行复合MongoDBfind()的好方法,其标准如下: 查询将根据搜索条件匹配一个文档 如果找到匹配项,将返回该文档 如果找不到匹配项,则会返回另一个文档。第二个文档将匹配另一组标准 理想情况下,无论发生什么情况,查询都只返回一条记录 在我的特殊情况下,我有一个用户的集合,其中包含用户及其相关权限的列表。它还包含一个包含默认权限的guest伪用户的特殊条目。如果没有准确的用户匹配,则需要返回此guest文档 我尝试过使用{$or:[{id:“bob”},{id:“gues
find()
的好方法,其标准如下:
- 查询将根据搜索条件匹配一个文档
- 如果找到匹配项,将返回该文档
- 如果找不到匹配项,则会返回另一个文档。第二个文档将匹配另一组标准
- 理想情况下,无论发生什么情况,查询都只返回一条记录
用户的集合
,其中包含用户及其相关权限的列表。它还包含一个包含默认权限的guest
伪用户的特殊条目。如果没有准确的用户匹配,则需要返回此guest
文档
我尝试过使用{$or:[{id:“bob”},{id:“guest”}
以及{id:{$in:[“bob”,“guest”]}}
,但这两种方法都会按顺序搜索集合,并根据首先插入的对象返回“bob”或“guest”
有没有一种方法可以显式地说findbob
或者返回guest
文档作为回退
请记住,这将从Node.js执行,因此我正在寻找一种干净简单的方法将其卸载到MongoDB
我意识到这可以作为两个查询来完成,但如果可能的话,我希望避免这种情况
谢谢大家! 如果您插入
guest
作为第一个对象,那么通过组合limit
和sort
by\u id,您可以解决这个问题 我认为不必使用find({}),您可以使用aggregate,在这种情况下,$in和$cond操作符可以解决您的问题。
您可以参考此链接->
嗯,我不知道存在
$cond
。这可能就行了,尽管最终结果会很长。我想知道是否有一种没有聚合的替代方法。。。