在mongodb

时间:2016-10-15 11:03:47

标签: mongodb

我的mongodb上有一个名为'EloVars'的集合,只有一个文档:

{
"_id": {
    "$oid": "5800f3bfdcba0f48d2c58161"
},
"nextPID": "0",
"TotalComprasions": "0"

}

我试图以这种方式获取nextPID的值:

var myDoc = db.collection('EloVars').find();
if(myDoc) {
    console.log('What exactly am I getting here:')
    console.log(myDoc)
    req.body.pid = myDoc.nextPID;
}

当我看到控制台时,我注意到我得到的不是'EloVars'系列......只是长期阅读:

  Readable {
  pool: null,
  server: null,
  disconnectHandler: 
   { s: { storedOps: [], storeOptions: [Object], topology: [Object] },
     length: [Getter] },
  bson: {},
  ns: 'mydb.EloVars',
  cmd: 
   { find: 'mydb.EloVars',
     limit: 0,
     skip: 0,
     query: {},
     slaveOk: true,
     readPreference: { preference: 'primary', tags: undefined, options: [Object] } },
  options: 
 .....
 .....

这是什么意思,为什么我会得到它?

2 个答案:

答案 0 :(得分:1)

find()返回cursor。您必须迭代光标才能获取文档。

var cursor = db.collection('EloVars').find();

cursor.each(function(err, doc) {
    console.log(doc);
});

或者您可以将其转换为数组以获取文档。

cursor.toArray(function(err, doc){
    console.log(doc);
});

答案 1 :(得分:1)

你为什么这么想?如果没有任何具体原因,你只想获得“nextPID”,你可以使用以下查询:

db.collection('EloVars').findOne({},{_id:0, nextPID:1}).exec(function(err, doc) {
if(doc) {
    console.log('What exactly am I getting here:')
    console.log(myDoc)
    req.body.pid = doc.nextPID;
}
})

P.S。:它只会获得一个nextPID。

得到所有:

db.collection('EloVars').find({},{_id:0, nextPID:1}).exec(function(err, docs) {
    if(docs && docs.length){
     // your code here
    }
})