Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mongodb查询中寻找对某些文档进行优先级排序的正确方法_Mongodb - Fatal编程技术网

在Mongodb查询中寻找对某些文档进行优先级排序的正确方法

在Mongodb查询中寻找对某些文档进行优先级排序的正确方法,mongodb,Mongodb,我到处找,找不到我需要解决的问题的适当来源 给定记录数据,在查询所有文档时,我需要将某些文档的优先级排在其他文档的优先级之上 例如:假设我正在进行此搜索 db.users.find().limit(10) 我的文档包含id=1,2,3,….50的数据 如何首先对id=12或id=49的查询进行优先级排序 我想要得到的是: array({id=12}, {id=49} ... fill the rest until pager limit) 我试过使用$或类似的方法: { "$

我到处找,找不到我需要解决的问题的适当来源

给定记录数据,在查询所有文档时,我需要将某些文档的优先级排在其他文档的优先级之上

例如:假设我正在进行此搜索

db.users.find().limit(10)
我的文档包含id=1,2,3,….50的数据

如何首先对id=12或id=49的查询进行优先级排序

我想要得到的是:

array({id=12}, {id=49} ... fill the rest until pager limit)
我试过使用$或类似的方法:

{
   "$or": [
     {'_id': {'$in': [id=12,id=49]}},
     {}
   ]
}
但我不认为这是正确的方法,它不起作用

非常感谢您的任何帮助

您可以使用此方法

  • $addFields
    要添加用于排序的新字段
    hasId
    ,请检查输入id中是否有字段
    \u id
    ,然后返回1,否则删除字段
  • $sort
    hasId
    降序排序
  • $limit
    文档

这将只返回12、49,我仍然希望得到剩余的(填充数组直到寻呼机限制)我知道跳过,这不是我想要的。我基本上希望在不进行任何筛选的情况下获取所有文档(在寻呼机限制范围内),但要确保某些值将位于第一页(例如,将它们排序到第一页)
db.collection.aggregate([
  {
    $addFields: {
      hasId: {
        $cond: [
          { $in: ["$_id", [8, 5]] },
          1,
          "$$REMOVE"
        ]
      }
    }
  },
  { $sort: { hasId: -1 } },
  { $limit: 5 }
])