首页 文章

我如何获得Mongodb系列中的所有键?

提问于
浏览 1543
0

我看到很少的解决方案,但那些并不是我的解决方案 . 我有一个名称结果的数据库,集合名称是如下标记:

db.marks.find();
{ "_id" : ObjectId("54f57522627af4bfdcf79764"), "name" : "John", "scroe1" : 23, "score2" : 21, "score5" : 12 }
{ "_id" : ObjectId("54f5761a627af4bfdcf79765"), "name" : "Mike", "scroe2" : 22, "score3" : 20, "score4" : 22 }
{ "_id" : ObjectId("559d0bc521cb2e056507c3e3"), "name" : "Bush", "score2" : 30 }

我试过了

var doc=db.marks.findOne(); for (var key in doc) print(key);

我得到了

_id
name
score1
score2
score5

但是我希望收集所有关键字如下:

_id, name, score1, score2, score3, score4, score5

名称scroe1得分2得分3

2 回答

  • 2

    findOne只返回第一个找到的文件 . 由于您列出的第一个文档没有score3和score4键,因此不会显示它们 . 如果要在所有文档中显示所有根级别键,则需要遍历db中的所有文档 .

    var keys = [];
    db.marks.find().forEach(function(doc){
        for (var key in doc){ 
            if(keys.indexOf(key) < 0){
               keys.push(key);
            }
        }
    });
    
    print(keys);
    
  • 0

    Mongodb find() 命令有两个参数,第一个是查询,第二个是投影 .

    db.collection.find(query,projection) 之类的东西 .

    如果文档是 db.myCol.find(); ,则返回:

    {
      {
        _id:1
        name: ''hello',
        age: 23
      }, {
        _id:2
        name: ''bollo',
        age: 27
      }
    }
    

    并且 db.myCol.find({},{_id:1}); 返回:

    1
    2
    

相关问题