【问题标题】:MongoDB - Exclude an inner array but include it's countMongoDB - 排除内部数组但包含它的计数
【发布时间】:2012-03-23 01:06:38
【问题描述】:

我有一个名为devicesegments 的表,其中每一行都包含一个名为设备的大数组。由于设备数组的大小,我被要求不要将它包含在我的查询中,以查找列出所有devicesegments 的页面,但只包含它们的计数。这可能吗?
我之前在做什么: 一个简单的db.devicesegments.find()

我现在在做什么: db.devicesegments.find({}, { devices : 0 })

我想要达到的目标: db.devicesegments.find({}, { devices : 0, devices.length : 1 })

类似于COUNT(devices) AS device_count

【问题讨论】:

    标签: arrays mongodb include count


    【解决方案1】:

    Ashkay,目前无法使用 Mongo 执行此操作。正如@rompetroll 所说,您的应用程序应在每个文档上保留一个“计数”字段,并在您更改数组中的条目数时仔细 $inc 它。然后当您查询文档时,排除数组,如:

    db.collection.find({}, {devices:0})
    

    如果您愿意运行 MongoDB 2.1,这是一个开发版本,聚合框架提供了一种计算查询中数组大小的方法:

    http://www.mongodb.org/display/DOCS/Aggregation+Framework

    【讨论】:

      【解决方案2】:

      由于目前没有办法做到这一点,除非在我的表中包含一个新的 device_count,因此我应用的临时修复是从数据库中获取所有数据以及 devices 数组,并为每一行,为devices.length 添加一个字段,然后在发送数据之前删除devices 数组。

      【讨论】:

        猜你喜欢
        • 2013-03-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多