MongoDB - 查询大型集合

Posted

技术标签:

【中文标题】MongoDB - 查询大型集合【英文标题】:MongDB - queries a large collection 【发布时间】:2016-07-22 21:22:16 【问题描述】:

我的 MongoDB 集合中有 40 个 MM 文档(例如 db.large_collection)

我想获取所有不同的 User_ID。

我在字段 user_id 上创建了一个索引,但是当我尝试执行时,它返回一个错误。

> db.large_collection.count()
39894523

> db.clean_tweets4.getIndexes()
[

    "v" : 1,
    "key" : 
        "_id" : 1
    ,
    "name" : "_id_",
    "ns" : "sampled_tourist.clean_tweets4"
,

    "v" : 1,
    "key" : 
        "user_id" : 1
    ,
    "name" : "user_id_1",
    "ns" : "sampled_tourist.clean_tweets4"
,

    "v" : 1,
    "key" : 
        "coordinates" : 1
    ,
    "name" : "coordinates_1",
    "ns" : "sampled_tourist.clean_tweets4"
,

    "v" : 1,
    "key" : 
        "timestamp_ms" : 1
    ,
    "name" : "timestamp_ms_1",
    "ns" : "sampled_tourist.clean_tweets4"

]

但是当我运行时

    db.clean_tweets4.find(,user_id:1)
 "_id" : ObjectId("5790f9a178776f4b56ede2be"), "user_id" : NumberLong("2246342226") 
 "_id" : ObjectId("5790f9a178776f4b56ede2bf"), "user_id" : NumberLong("2289817236") 
 "_id" : ObjectId("5790f9a178776f4b56ede2c0"), "user_id" : 1904381486 
 "_id" : ObjectId("5790f9a178776f4b56ede2c1"), "user_id" : NumberLong("3044032705") 
 "_id" : ObjectId("5790f9a178776f4b56ede2c2"), "user_id" : NumberLong("3407958364") 
 "_id" : ObjectId("5790f9d278776f4b56ee4af2"), "user_id" : 1566025975 
 "_id" : ObjectId("5790f7ab78776f4b56ea55c6"), "user_id" : 15857879 
 "_id" : ObjectId("5790f9a178776f4b56ede28f"), "user_id" : NumberLong("3394102511") 
 "_id" : ObjectId("5790f9a178776f4b56ede293"), "user_id" : 1376377652 
 "_id" : ObjectId("5790f9a178776f4b56ede294"), "user_id" : 352385989 
 "_id" : ObjectId("5790f9a178776f4b56ede295"), "user_id" : NumberLong("2383622643") 
 "_id" : ObjectId("5790f9a178776f4b56ede29c"), "user_id" : 152362163 
 "_id" : ObjectId("5790f9a178776f4b56ede2a0"), "user_id" : 1446113954 
 "_id" : ObjectId("5790f9a178776f4b56ede2a1"), "user_id" : 1893437088 
 "_id" : ObjectId("5790f9a178776f4b56ede2a2"), "user_id" : 67121578 
 "_id" : ObjectId("5790f9a178776f4b56ede2a3"), "user_id" : 1714137770 
 "_id" : ObjectId("5790f9a178776f4b56ede2a4"), "user_id" : 52806609 

谢谢!

【问题讨论】:

你查看distinct了吗? docs.mongodb.com/manual/reference/method/db.collection.distinct 是的。但是,这一直让我崩溃,并说它无法处理内存。还有其他想法吗? 返回什么错误? 【参考方案1】:

查找();意味着它返回一切。 这就是你想要的。

db.collection.find(user_id:1); 

【讨论】:

我想我对你想要做什么感到困惑。有没有地方可以查看您的整个收藏。

以上是关于MongoDB - 查询大型集合的主要内容,如果未能解决你的问题,请参考以下文章

如何处理大型mongodb集合

通过 spring-data 迭代 MongoDB 中的大型集合

使用 rmongodb 和 plyr 将大型 MongoDB 集合传输到 R 中的 data.frame

多个子字段的 MongoDB 查询匹配

mongodb 在查询期间如何处理文档

如何使用 MongoDB 存储和搜索大型文档?