MongoDB:使用 $or 运算符按条件顺序查询时如何对文档进行排序?
Posted
技术标签:
【中文标题】MongoDB:使用 $or 运算符按条件顺序查询时如何对文档进行排序?【英文标题】:MongoDB: how can I sort documents when querying with $or operator by conditions order? 【发布时间】:2016-10-02 07:43:36 【问题描述】:有以下 Mongoose 查询:
User.find($or: [
'expertData.category': $in: categoryIds ,
'expertData.areas.category': $in: categoryIds
])
.limit(perPage)
.skip(perPage * page);
字段'expertData.category'
和'expertData.areas.category'
是Category
集合的引用ID,具有以下架构:
var CategorySchema = new Schema(
name: type: String,
desc: type: String,
src : type: String,
updated:
type: Date,
default: Date.now
);
有没有办法以这种方式对文档进行排序,所以在结果数组的开头将是与$or
运算符中的第一个条件匹配的文档(即 '_expertData.category': $in: categoryIds
),然后才是所有匹配的文档$or
运算符中的第二个条件(即 '_expertData.areas.category': $in: categoryIds
)?
【问题讨论】:
【参考方案1】:是的,您分别执行命令并将第二个查询的结果附加到第一个查询的结果中。
【讨论】:
是的,这是可行的解决方案,但对我来说不是。我将使用.limit
和.skip
对结果进行分页。抱歉,我在最初的问题中没有提到这一点。我现在已经更新了。以上是关于MongoDB:使用 $or 运算符按条件顺序查询时如何对文档进行排序?的主要内容,如果未能解决你的问题,请参考以下文章