gpt4 book ai didi

mongodb - 检索 MongoDB 中列表的长度

转载 作者:可可西里 更新时间:2023-11-01 09:25:01 26 4
gpt4 key购买 nike

我正在尝试执行一个 mongo 查询,在其中获取每个文档中数组的长度,而不检索列表的全部内容。理想情况下,这将是一个沿着这些方向的投影选项:

db.log.find({},{entries:{$length: 1}})

但这不受支持。也许这可以通过新的聚合框架以一种优雅的方式实现?我想出的是:

db.log.find({},{"entries.length": 1})

返回的结果如下:

{ "_id" : ObjectId("50d2fb07e64cfa55431de693"), "entries" : [   {    },     {    },     {    },     {    },     {    },     {    },     {    },     {  },   {    },     {    },     {    },     {    },     {    },     {  },   {    },     {    },     {    },     {    } ] }

这很丑陋,但基本上可以满足我的需求,因为我可以计算这个列表的长度,而无需获取完整内容的网络权重。但我不知道为什么会这样。这个查询实际上在做什么?

最佳答案

现在,我可以考虑两种方法:

1) 使用聚合框架:

db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1}  } }  ]);

2) 或者您可以向保存条目数的文档添加一个字段。因此,每次将新值推送到 entries 数组时,都必须递增计数器。更新将是这样的:

db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })

显然,您在这里需要权衡:聚合框架对于这个简单的操作来说过于昂贵。但是在文档中添加一个字段,每次更新都应该增加计数器。

恕我直言,计数器看起来更合理,尽管它看起来是一种解决方法。

关于mongodb - 检索 MongoDB 中列表的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com