【发布时间】:2018-07-28 09:17:20
【问题描述】:
假设我在 MongoDB 中有一个用户集合,其架构如下所示:
{
name: String,
sport: String,
favoriteColor: String
}
假设我传递了这样的值来匹配用户:
{ name: "Thomas", sport: "Tennis", favoriteColor:"blue" }
我想做的是根据所有这些属性匹配用户。但是,如果没有用户回来,我想仅在以下属性上匹配用户:
{sport: "Tennis", favoriteColor:"blue" }
如果没有用户回来,我想只在这个属性上匹配一个用户:
{ favoriteColor: "blue" }
是否可以使用 Mongo 在一个查询中执行类似的操作?我在 Mongo 中看到了 $switch 条件,它将匹配一个案例,然后立即返回,但问题是我无法访问它在 then 块中检索到的文档。好像只能在里面写字符串。
关于如何完成我正在寻找的任何建议?
只执行多个User.find({...}) 查询是最好的(也是唯一的方法)吗?
【问题讨论】:
-
mongodb没有内置这样的功能。您是否有特定原因在服务器端执行此类操作?如果 else 阻止执行此类请求,您应该使用客户端。您可以运行所有查询,尽管在
$facet阶段内的单独管道中并不理想。
标签: mongodb mongoose mongodb-query aggregation-framework