MongoDB:如何按数组字段对文档进行排序?

第一的

我需要按包含布尔值的数组字段对文档进行排序。

{
    "_id" : ObjectId("610024d989c5b829e72940c5"),
    "firstname" : "Christophe",
    "lastname" : "Pichon",
    "documents" : [
        {
            "mongoId" : "610024d90053e800143b0fd3",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        },
        {
            "mongoId" : "610024d90053e800143b0fd5",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        },
        {
            "mongoId" : "60fea9140053e800143b0f92",
            "status" : "notified",
            "signable" : false,
            "signed" : false
        },
        {
            "mongoId" : "610024d90053e800143b0fd7",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        }
    ]
},
{
    "_id" : ObjectId("610024b189c5b829e72940c4"),
    "firstname" : "Paulette",
    "lastname" : "Besnard",
    "documents" : [
        {
            "mongoId" : "610024b00053e800143b0fc4",
            "status" : "notified",
            "signable" : true,
            "signed" : true
        },
        {
            "mongoId" : "610024b10053e800143b0fc6",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        },
        {
            "mongoId" : "60fea9140053e800143b0f92",
            "status" : "notified",
            "signable" : false,
            "signed" : false
        },
        {
            "mongoId" : "610024b10053e800143b0fc8",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        }
    ]
},
{
    "_id" : ObjectId("60febc9e89c5b829e72940c3"),
    "firstname" : "Louis",
    "lastname" : "Herve",
    "documents" : [
        {
            "mongoId" : "60febc9e0053e800143b0fb7",
            "status" : "notified",
            "signable" : true,
            "signed" : true
        },
        {
            "mongoId" : "60febc9e0053e800143b0fb9",
            "status" : "notified",
            "signable" : true,
            "signed" : true
        },
        {
            "mongoId" : "60fea9140053e800143b0f92",
            "status" : "notified",
            "signable" : false,
            "signed" : false
        },
        {
            "mongoId" : "60febc9e0053e800143b0fbb",
            "status" : "notified",
            "signable" : true,
            "signed" : false
        }
    ]
},

一旦排序,我需要这个结果:

{
    "_id" : ObjectId("60febc9e89c5b829e72940c3"),
    "firstname" : "Louis",
    "lastname" : "Herve",
},

{
    "_id" : ObjectId("610024b189c5b829e72940c4"),
    "firstname" : "Paulette",
    "lastname" : "Besnard",
},

{
    "_id" : ObjectId("610024d989c5b829e72940c5"),
    "firstname" : "Christophe",
    "lastname" : "Pichon",
},

作为 :

  • Louis 有 2/3(已签名/可签名)文件
  • 波莱特有 1/3
  • 克里斯托弗 0/3

所以我需要按签名对文档进行排序并检索签署最多文档的用户。

关于如何执行此操作的想法?

谢谢你的帮助

萨加·丹杜基亚

在您的收藏中尝试此查询

db.collectionName.aggregate([{
    "$project": {
        "firstname": "$firstname",
        "lastname": "$lastname",
        "signed": { // Count will be stored in "signed" field
            "$size": { // Get size of filtered documents
                "$filter": { // Filter out signed documents
                    "input": "$documents", "as": "item", "cond": { "$eq": ["$$item.signed", true] }
                }
            }
        },
        "signable": { // Count will be stored in "signable" field
            "$size": { // Get size of filtered documents
                "$filter": { // Filter out signable documents
                    "input": "$documents", "as": "item", "cond": { "$eq": ["$$item.signable", true] }
                }
            }
        }
    }
}, {
    "$sort": { // sorting users who signed the most documents
        "signed": -1,
        "signable": -1
    }
}]);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB按数组中的值对文档进行排序

MongoDB按数组元素对文档进行排序

如何在firebase firestore中按数组字段长度对文档进行排序

按嵌套字段对文档进行排序

如何按MongoDB中的特定字段对文档进行分组

Mongodb:按数组最后一个元素中的值对文档进行排序

按内部字段字符串对文档进行排序

Mongodb按复杂的计算值对文档进行排序

MongoDb查询,用于按值对文档进行排序

按数组长度在Mongoose中对文档进行排序

Mongo按数组中的值对文档进行排序

MongoDB-按字段值对文档进行分组

MongoDB如何按两个值的总和对文档进行排序?

MongoDb使用多个嵌套数组对文档进行排序

如何根据Array字段的长度对文档进行排序

如何根据lucene中的字段对文档进行排序?

mongo如何按组字段对文档进行分组

如何对文档中的数组元素进行排序(猫鼬)

按与过滤器匹配的数组的最后一个元素中的值对文档进行排序。Mongodb

按字段/键名称对MongoDB文档进行排序

用嵌套文档lodash对文档数组进行排序

如何通过按数组字段进行选择来检索MongoDB文档

如何使用go在弹性搜索中按嵌套对象对文档进行排序?

在MongoDb中按数组字段值对记录进行排序

按整数对文档进行排序Firestore Kotlin

按xpages中的总值对文档集合进行排序

firebase / 通过增加字段对文档进行排序

如何使用Java在MongoDB中按字段对文档分组和计算计数

如何在mongodb中对文档进行排序,以便最后出现空值