player表结构大致如此,且数据量级在百万: { “_id”: 1, “level”: 3, “name”: “xiaoming” } 我的需求是:快速取出所有表中的_id,并组成一个array,类似 [1,2,3,4,5,6]
db.getCollection(‘player’).find({{},{’_id’: 1}).toArray() 这样查找出来的结果是 [{"_id": 1}, {"_id": 2}, {"_id": 3}, {"_id": 4}, {"_id": 5}, {"_id": 6}]
请问各位mongodb能否直接取出这个数组 [1,2,3,4,5,6]??
一定要取出来么,自己map(item => item._id)
就可以。不过还是没解答你的问题- -
@DevinXian 这个可以。只是想知道只通过mongodb能否快速有效的完成~
使用聚合
db.getCollection(‘player’).aggregate({$group:{_id:‘hello’,arr:{$push:’$_id’}}})
{ “_id” : “hello”, “arr” : [ 1,2,3] }
@Qquanwei 哇,谢啦。
@DevinXian 同意1L做法。。
@Qquanwei 3L这种做法,速度跟1L的做法有什么差异吗?
@alsotang 3L是在数据库中执行操作,1L是取出来在本地操作,性能是减少了本地的cpu 如果考虑到带宽,1L的传输了冗余数据
@Qquanwei 哈哈,这是个问题