Mongo查询对具有最大数量的不同属性或键的结果进行排序?

泰曼

我需要编写一个MongoDB查找查询来从集合中获取结果,并根据每行的最大属性对其进行排序。

例如:现在结果是这样的:

[{
    column1 : "abc",
    column2 : "def",
},
{
    column1 : "abc",
},
{
    column1 : "abc",
    column2 : "def",
    column3 : "ghi"
}]

应该返回什么查询(按列数的降序排列):

[{
    column1 : "abc",
    column2 : "def",
    column3 : "ghi"
},
{
    column1 : "abc",
    column2 : "def",
},
{
    column1 : "abc",
}]

查询是db..find({“ column1”:“ abc”});

是否可以通过查询数据库来实现?

大理石

并非最佳选择,但是您可以调用mapReduce以按字段数获取ID,然后以升序查询这些ID,以下是一些代码的开头(未经测试!

var map = function(doc) {
   emit(Object.keys(doc).length, doc._id);
}
var reduce = function(key, values) {
   return values;
}
coll.mapReduce(function() { map(this) }, reduce, function(err, results) {
   results.sort((a,b) => { return a._id > b._id });
   results.forEach(result => {
      console.log("now getting ids with " + result._id + " fields");
      var cursor = coll.find({ _id : { $in : result.value}});
      // do something with cursor.
   });
);

另一种选择是在每个文档中添加一个字段,fields_count其中将保存该文档的字段数,您可以使用该字段进行查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java Hashmap:获取具有最大数量的值的键

如何查询具有最大数量的三个关系?

标记每行中具有最大数量的行

HQL选择具有最大数量的行

具有最大数量Power BI的索引

SQLAlchemy 有最大数量的关系?

为什么不同的Android设备允许同时进行蓝牙连接的最大数量不同?

使用最大数量按名称对SQL表进行排序

使用Sunspot查询具有不同属性的多个模型

在嵌套列表中查找具有最大数量的最大列表

有关B树索引中不同值的最大数量的琐碎问题

如何在结果中找到最大数量

如何在具有多个表的树中找到最大数量的<td>

如何在Django中获取具有最大数量相关对象的对象

熊猫groupby将系列转换为具有最大数量值的数据框

列可以具有的检查约束最大数量是多少?

SQL:如何找到具有最大数量的特定值的行

将数组划分为具有相等和的最大数量的部分

需要从表中查询最大数量

HttpSession属性的最大数量是多少

RTCPeerConnection的最大数量

使用条件语句对仅在 C++ 中输入的 3 位数的最小到最大数量进行排序

是否达到了输出系列的最大数量(64)但具有相同数量的绘图功能?这个怎么理解?

在一个查询中按不同属性对两个模型进行排序

具有不同属性的XSLT串联

追加具有不同属性的元素

是否有最大数量的“安全”数据要哈希?

在没有 max() 的列表中打印最大数量

为什么Linux有最大数量的声卡?