MongoDB如何通过均衡对元素进行排序

MongoDB如何通过均衡对元素进行排序,mongodb,Mongodb,我有一个收藏: { _id: some object id, title: "Example", region: "US" } 我想通过均衡按元素排序 例如,如果region=US,则将区域为“US”的所有元素放在结果的开头,然后将区域不同的元素放在后面 我可以在MongoDB查询中执行此操作吗?如果是,那么如何做?可以使用 我们需要管道和阶段 下面的查询将给出所需的输出 db.collection_name.aggregate([ { $project: { _id:

我有一个收藏:

{
  _id: some object id,
  title: "Example",
  region: "US"
}
我想通过均衡按元素排序

例如,如果
region=US
,则将区域为“US”的所有元素放在结果的开头,然后将区域不同的元素放在后面

我可以在MongoDB查询中执行此操作吗?如果是,那么如何做?

可以使用

我们需要管道和阶段

下面的查询将给出所需的输出

db.collection_name.aggregate([
  {
    $project: { _id: 1, title: 1, region: 1,
      isCountryUS: {
        $cond: { if: {
                      $eq: [ "US", "$region" ]
                     },
                 then: 1,
                 else: 0
        }
      }
     }
  },
  {
    $sort: { isCountryUS: -1, region: 1 }
  },
  {   
    $project: { _id: 1, title: 1, region: 1 }
  }
]);
让我们收集20份文件的样品

{"_id":"5d19bb679735230010737312","title":"Example 1","region":"US"}
{"_id":"5d19bb679735230010737313","title":"Example 2","region":"US"}
{"_id":"5d19bb679735230010737314","title":"Example 3","region":"US"}
{"_id":"5d19bb679735230010737315","title":"Example 4","region":"US"}
{"_id":"5d19bb679735230010737316","title":"Example 5","region":"IND"}
{"_id":"5d19bb679735230010737317","title":"Example 6","region":"IND"}
{"_id":"5d19bb679735230010737318","title":"Example 7","region":"CAN"}
{"_id":"5d19bb679735230010737319","title":"Example 8","region":"CAN"}
{"_id":"5d19bb67973523001073731a","title":"Example 9","region":"UK"}
{"_id":"5d19bb67973523001073731b","title":"Example 10","region":"UK"}
{"_id":"5d19c0e09735230010737320","title":"Example 20","region":"US"}
{"_id":"5d19c0e09735230010737321","title":"Example 12","region":"MEX"}
{"_id":"5d19c0e09735230010737322","title":"Example 17","region":"MEX"}
{"_id":"5d19c0e09735230010737323","title":"Example 14","region":"MEX"}
{"_id":"5d19c0e09735230010737324","title":"Example 15","region":"FRA"}
{"_id":"5d19c0e09735230010737325","title":"Example 16","region":"FRA"}
{"_id":"5d19c0e09735230010737326","title":"Example 13","region":"ARG"}
{"_id":"5d19c0e09735230010737327","title":"Example 18","region":"ARG"}
{"_id":"5d19c0e09735230010737328","title":"Example 19","region":"GER"}
{"_id":"5d19c0e09735230010737329","title":"Example 11","region":"GER"}
当我们执行第一个时,我们得到以下结果 您可以看到,为了方便获得所需的结果,我们引入了一个新属性
isCountryUS

{"_id":"5d19bb679735230010737312","title":"Example 1","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737313","title":"Example 2","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737314","title":"Example 3","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737315","title":"Example 4","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737316","title":"Example 5","region":"IND","isCountryUS":0}
{"_id":"5d19bb679735230010737317","title":"Example 6","region":"IND","isCountryUS":0}
{"_id":"5d19bb679735230010737318","title":"Example 7","region":"CAN","isCountryUS":0}
{"_id":"5d19bb679735230010737319","title":"Example 8","region":"CAN","isCountryUS":0}
{"_id":"5d19bb67973523001073731a","title":"Example 9","region":"UK","isCountryUS":0}
{"_id":"5d19bb67973523001073731b","title":"Example 10","region":"UK","isCountryUS":0}
{"_id":"5d19c0e09735230010737320","title":"Example 20","region":"US","isCountryUS":1}
{"_id":"5d19c0e09735230010737321","title":"Example 12","region":"MEX","isCountryUS":0}
{"_id":"5d19c0e09735230010737322","title":"Example 17","region":"MEX","isCountryUS":0}
{"_id":"5d19c0e09735230010737323","title":"Example 14","region":"MEX","isCountryUS":0}
{"_id":"5d19c0e09735230010737324","title":"Example 15","region":"FRA","isCountryUS":0}
{"_id":"5d19c0e09735230010737325","title":"Example 16","region":"FRA","isCountryUS":0}
{"_id":"5d19c0e09735230010737326","title":"Example 13","region":"ARG","isCountryUS":0}
{"_id":"5d19c0e09735230010737327","title":"Example 18","region":"ARG","isCountryUS":0}
{"_id":"5d19c0e09735230010737328","title":"Example 19","region":"GER","isCountryUS":0}
{"_id":"5d19c0e09735230010737329","title":"Example 11","region":"GER","isCountryUS":0}
然后在执行后,结果将被修改为

{"_id":"5d19bb679735230010737312","title":"Example 1","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737313","title":"Example 2","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737314","title":"Example 3","region":"US","isCountryUS":1}
{"_id":"5d19bb679735230010737315","title":"Example 4","region":"US","isCountryUS":1}
{"_id":"5d19c0e09735230010737320","title":"Example 20","region":"US","isCountryUS":1}
{"_id":"5d19c0e09735230010737326","title":"Example 13","region":"ARG","isCountryUS":0}
{"_id":"5d19c0e09735230010737327","title":"Example 18","region":"ARG","isCountryUS":0}
{"_id":"5d19bb679735230010737318","title":"Example 7","region":"CAN","isCountryUS":0}
{"_id":"5d19bb679735230010737319","title":"Example 8","region":"CAN","isCountryUS":0}
{"_id":"5d19c0e09735230010737324","title":"Example 15","region":"FRA","isCountryUS":0}
{"_id":"5d19c0e09735230010737325","title":"Example 16","region":"FRA","isCountryUS":0}
{"_id":"5d19c0e09735230010737328","title":"Example 19","region":"GER","isCountryUS":0}
{"_id":"5d19c0e09735230010737329","title":"Example 11","region":"GER","isCountryUS":0}
{"_id":"5d19bb679735230010737316","title":"Example 5","region":"IND","isCountryUS":0}
{"_id":"5d19bb679735230010737317","title":"Example 6","region":"IND","isCountryUS":0}
{"_id":"5d19c0e09735230010737321","title":"Example 12","region":"MEX","isCountryUS":0}
{"_id":"5d19c0e09735230010737322","title":"Example 17","region":"MEX","isCountryUS":0}
{"_id":"5d19c0e09735230010737323","title":"Example 14","region":"MEX","isCountryUS":0}
{"_id":"5d19bb67973523001073731a","title":"Example 9","region":"UK","isCountryUS":0}
{"_id":"5d19bb67973523001073731b","title":"Example 10","region":"UK","isCountryUS":0}
因此,在管道执行的这个阶段,我们得到了我们想要的结果,但是有一个额外的属性(我们引入这个属性来获得这个想要的结果)。我们可以通过在最终结果中只投影所需的属性来过滤掉它

因此,我们的最终结果将是

{"_id":"5d19bb679735230010737312","title":"Example 1","region":"US"}
{"_id":"5d19bb679735230010737313","title":"Example 2","region":"US"}
{"_id":"5d19bb679735230010737314","title":"Example 3","region":"US"}
{"_id":"5d19bb679735230010737315","title":"Example 4","region":"US"}
{"_id":"5d19c0e09735230010737320","title":"Example 20","region":"US"}
{"_id":"5d19c0e09735230010737326","title":"Example 13","region":"ARG"}
{"_id":"5d19c0e09735230010737327","title":"Example 18","region":"ARG"}
{"_id":"5d19bb679735230010737318","title":"Example 7","region":"CAN"}
{"_id":"5d19bb679735230010737319","title":"Example 8","region":"CAN"}
{"_id":"5d19c0e09735230010737324","title":"Example 15","region":"FRA"}
{"_id":"5d19c0e09735230010737325","title":"Example 16","region":"FRA"}
{"_id":"5d19c0e09735230010737328","title":"Example 19","region":"GER"}
{"_id":"5d19c0e09735230010737329","title":"Example 11","region":"GER"}
{"_id":"5d19bb679735230010737316","title":"Example 5","region":"IND"}
{"_id":"5d19bb679735230010737317","title":"Example 6","region":"IND"}
{"_id":"5d19c0e09735230010737321","title":"Example 12","region":"MEX"}
{"_id":"5d19c0e09735230010737322","title":"Example 17","region":"MEX"}
{"_id":"5d19c0e09735230010737323","title":"Example 14","region":"MEX"}
{"_id":"5d19bb67973523001073731a","title":"Example 9","region":"UK"}
{"_id":"5d19bb67973523001073731b","title":"Example 10","region":"UK"}

在这里张贴您迄今为止尝试过的内容?