我试图在我的数据库中打印每个集合的第一个文档。我有以下脚本:
var collectionNames = db.getCollectionNames();
for(var i = 0, len = collectionNames.length; i < len ; i++){
db[collectionNames[i]].findOne() //find[0]
}
我不知道我的逻辑中的错误在哪里,但此代码仅打印最新集合中的第一个文档
答案 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()
在您的示例中不起作用的原因是您对返回值无效。