mongodb 将数据转换为字符串。怎么修?

mongodb convert data to string. how to fix?

我想从我的数据库中获取数据以使用变量。

这是我的数据库查询:

db.progress.find({username:socket},function(err,res){

我从哪些方面获得信息:

[ { _id: 61e180b54e0eea1454f8e5e6,
    username: 'user',
    exp: 0,
    fraction: 'undf'} ]

如果我发送请求

db.progress.find({username:socket},{exp:1},function(err,res){

然后在return我会得到

[ { _id: 61e180b54e0eea1454f8e5e6, exp: 0 } ]

如何从接收到的数据中只提取 0。我想做这样的事情。

var findprogress = function(socket,cb){
db.progress.find({username:socket},function(err,res){
cb(res.exp,res.fraction)
})
}



findprogress(socket,function(cb){
console.log(cb.exp)//0
console.log(cb.fraction)//undf
           })

但我不知道如何正确实施。

在这种情况下,我推荐聚合,这样您可以更轻松地操作您的投影数据。例如:

db.progress.aggregate([
{ $match: { username: socket } },
{ $project: { _id: 0, exp: 1 } }
])

通过这种方式,您可以直接告诉查询不包含通常默认包含的 objectId。

尝试把0给_id:

db.progress.find({username:socket},{exp:1 , _id:0},function(err,res){

find returns 一个数组,因此在访问字段之前需要 select 数组元素:

var findprogress = function(socket,cb){
  db.progress.find({username:socket},function(err,res){
    cb(res[0].exp,res[0].fraction)
  })
}