mongodb - 从不同的跳过获取相同的记录
问题描述
我正在按状态对项目进行排序,并且通过多个不同的跳过,我得到了相同的记录。
我使用了聚合框架。
第一个查询:
db.order.aggregate([
{
"$match": {}
},
{
"$project": {
"orderId": "$order_id",
"name": 1,
"dateCreated": "$date_created",
"status": 1,
"dueDate": "$deliveryMethod.delivery_date",
"selectedQuantity": {
"$sum": "$items.selectedQuantity"
}
}
},
{
"$sort": {
"status": -1
}
},
{
"$skip": 16
},
{
"$limit": 1
}
])
第二个查询:
db.order.aggregate([
{
"$match": {}
},
{
"$project": {
"orderId": "$order_id",
"name": 1,
"dateCreated": "$date_created",
"status": 1,
"dueDate": "$deliveryMethod.delivery_date",
"selectedQuantity": {
"$sum": "$items.selectedQuantity"
}
}
},
{
"$sort": {
"status": -1
}
},
{
"$skip": 17
},
{
"$limit": 1
}
])
我希望得到不同的记录,因为在第二个名为 15 的查询记录中应该被跳过。
解决方案
嗨@razzil1 问题是=>您的排序不起作用,因为您的投影。
在你说 "status" 的投影之后:1 => mongodb 不知道排序 "$sort" : { "status" : -1} 因为他不认识,你需要把 "status" : "$地位”
问候, 销售
推荐阅读
- typescript - 在angular2中一次启用一个复选框
- c# - 在 Where & Select 中作为可枚举的动态字段
- terraform - 无法使用 user_data 执行脚本
- maven - 如何创建私有 Maven 存储库的镜像?
- javascript - 在布尔掩码上分散数组值的优雅方法
- paypal - 带有编码用户 ID 的 PayPal 付款
- mercurial - 构建失败,因为 repo pull 失败,存储库存在或超时等待锁定
- grails - Grails:相同的 URL 映射到每个不同 HTTP 方法的不同操作
- python - 记录鸭子类型的 Python 参数
- json - 使用 Angular 5 在 Mac OS 上下载/导出 json 文件