Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MongoDB-排除内部数组,但包括它';s计数_Arrays_Mongodb_Include_Count - Fatal编程技术网

Arrays MongoDB-排除内部数组,但包括它';s计数

Arrays MongoDB-排除内部数组,但包括它';s计数,arrays,mongodb,include,count,Arrays,Mongodb,Include,Count,我有一个名为devicesegments的表,其中每一行都包含一个名为devices的大型数组。由于设备阵列的大小,我被要求不要将其包含在我查询的页面中,该页面列出了所有devicesegments,而只包含它们的计数。这可能吗 我以前在做什么: 一个简单的db.devicesegments.find() 我现在做的是: db.devicesegments.find({},{devices:0}) 我想要达到的目标: db.devicesegments.find({},{devices:0,de

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

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

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


类似于将(设备)计数为设备计数的
计数

Ashkay,目前Mongo没有办法这么做。正如@rompetroll所说,应用程序应该在每个文档上保留一个“count”字段,并在更改数组中的条目数时小心地添加它。然后在查询文档时,排除数组,如下所示:

db.collection.find({}, {devices:0})
如果您愿意运行MongoDB 2.1,这是一个开发版本,那么聚合框架提供了一种在查询中计算数组大小的方法:


阿什凯,目前Mongo无法做到这一点。正如@rompetroll所说,应用程序应该在每个文档上保留一个“count”字段,并在更改数组中的条目数时小心地添加它。然后在查询文档时,排除数组,如下所示:

db.collection.find({}, {devices:0})
如果您愿意运行MongoDB 2.1,这是一个开发版本,那么聚合框架提供了一种在查询中计算数组大小的方法:


由于目前无法做到这一点,如果不在我的表中包含新的
设备计数
,我应用的临时修复方法是从数据库中获取所有数据,以及
设备
数组,并针对每一行,为
devices.length添加一个字段,然后在发送数据之前删除
devices
数组。

由于目前无法执行此操作,如果不在我的表中包含一个新的
device\u count
,我应用的临时修复程序是从数据库中获取所有数据,与
设备
数组一起,为每一行添加一个
设备.length
字段,然后在跨行发送数据之前删除
设备
数组