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"}
在这里张贴您迄今为止尝试过的内容?