循环遍历Mongo集合并执行查询

时间:2017-11-03 16:17:24

标签: mongodb mongo-shell

我试图在我的数据库中打印每个集合的第一个文档。我有以下脚本:

var collectionNames = db.getCollectionNames();
for(var i = 0, len = collectionNames.length; i < len ; i++){
    db[collectionNames[i]].findOne() //find[0]
}

我不知道我的逻辑中的错误在哪里,但此代码仅打印最新集合中的第一个文档

1 个答案:

答案 0 :(得分:0)

说我们有

> db.test1.save({item: 1})
WriteResult({ "nInserted" : 1 })
> db.test1.save({item: 2})
WriteResult({ "nInserted" : 1 })
> db.test1.save({item: 3})
WriteResult({ "nInserted" : 1 })
> db.test2.save({item: 3})
WriteResult({ "nInserted" : 1 })
> db.test2.save({item: 4})
WriteResult({ "nInserted" : 1 })

然后我们可以运行:

>var docs = [];
>
> collectionNames.forEach(function(name){
... docs.push(db[name].findOne());
... });

然后我们可以打印文档

> docs
[
        {
                "_id" : ObjectId("59fc9754cb24a8fbf29c6d5a"),
                "item" : 1
        },
        {
                "_id" : ObjectId("59fc9762cb24a8fbf29c6d5d"),
                "item" : 3
        }
]

db[collectionNames[i]].findOne()在您的示例中不起作用的原因是您对返回值无效。