我想做这样的事情: -
db.pub_pairs.find({status:'active'})
.sort( { if (pcat="abc") then 0 else 1 end })
.limit(10)
换句话说,我希望它更喜欢字段pcat为"abc"
的记录。
我也需要快速,但我可以根据需要添加索引。
有关如何做到这一点的任何建议?
感谢
答案 0 :(得分:0)
这样做的有效方法是两次查询数据库。对于具有pcat="abc"
的文档和具有pcat!="abc"
(伪代码)的一些东西:
var data = db.pub_pairs.find({status:'active', pcat="abc"})
.limit(10)
if (data.length < 10)
data.concat(db.pub_pairs.find({status:'active', pcat!="abc"})
.limit(10-data.length))
为了表现良好,我建议{status: 1, pcat: 1}
请注意,like any other "find" with MongoDB, you have to be prepared to retrieve the same document twice in the result set,特别是此处,如果pcat
字段在执行期间被其他客户端同时修改。