Tho*_*mas 5 mongoose mongodb mongodb-query aggregation-framework
假设我在MongoDB中有一个Users集合,其架构如下所示:
{
name: String,
sport: String,
favoriteColor: String
}
Run Code Online (Sandbox Code Playgroud)
并且假设我传递了这样的值以匹配用户:
{ name: "Thomas", sport: "Tennis", favoriteColor:"blue" }
我想做的是根据所有这些属性匹配用户.但是,如果没有用户回来,我想在这些属性上匹配用户:
{sport: "Tennis", favoriteColor:"blue" }
如果没有用户回来,我想在这个属性上匹配一个用户:
{ favoriteColor: "blue" }
是否可以在Mongo的一个查询中执行类似的操作?我看到$switchMongo中的情况会匹配一个案例然后立即返回,但问题是我无法访问它在then块中检索到的文档.看起来你只能在那里写字符串.
关于如何完成我正在寻找的任何建议?
只执行多个User.find({...})查询是最好的(也是唯一的方法)吗?
这是使用 MongoDB 文本索引的一个很好的例子:
首先,您需要在这些字段上创建文本索引:
db.users.ensureIndex({ name: "text", sport: "text", favoriteColor: "text" });
Run Code Online (Sandbox Code Playgroud)
然后,您可以搜索与“ $text ”受数字限制的最佳匹配以显示:
db.users.find( { $text: { $search: "Tennis blue Thomas" } } ).limit(10)
Run Code Online (Sandbox Code Playgroud)