2016-02-29 147 views
2

我创建了一个查询返回包含 "Be"域值内的结果。例如: -的MongoDB:排序文本搜索结果

db.collection.find({ "$or" : [ { "name.en" : { "$regex" : "Be" } } , { "defaultName" : { "$regex" : "Be" } } ] }) 

但是,返回的结果在随机的方式来分类,有的含有"Be"字内,一些在一开始,一些中端。

是否有可能创造条件,按以下方式进行排序结果的单一查询:第一个返回的结果将开始与"Be",然后将所有的休息?

的查询结果,例如:

{ 
"defaultName" : "Belgium", 
... 
}, 
{ 
"defaultName" : "Berlin", 
... 
}, 
{ 
"defaultName" : "Bombei", 
... 
}, 
{ 
"defaultName" : "Danube", 
... 
} 

回答

1

这样的方法可以用aggreagtion框架内完成

阶段将是:

  1. 匹配 - 选择元素相匹配的正则表达式

  2. Gro最多的元素通过表达如果与正则表达式语句开始 - >真,否则为假

  3. 排序方式表达从2

你觉得呢?

+0

听起来像一个可行的解决方案。不幸的是我现在看不到另一个解决方案,而不是现在使用聚合框架感谢你的回答。 –

+0

这是我的荣幸:-) – profesor79