我需要按包含布尔值的数组字段对文档进行排序。
{
"_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",
},
作为 :
所以我需要按签名对文档进行排序并检索签署最多文档的用户。
关于如何执行此操作的想法?
谢谢你的帮助
在您的收藏中尝试此查询
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] 删除。
我来说两句