可以将存储的数据库值用作查询关键字吗?

时间:2017-03-21 16:15:20

标签: node.js mongodb

我收到用户ID和版本列表。然后我应该返回更新的用户(他们的版本增加了)。有没有什么方法可以使用数据库中的未知id作为数组用户的索引但没有for循环。下面我尝试了类似的东西,但它不起作用:

var users = req.body
var ids = Object.keys(users)

User.find({
   _id: { $in: ids },
   __v: { $gt: users['$_id']}
 })
   .select('firstName lastName email avatarPath')
   .exec(function (err, result) {
     if (err) {
       logger.error('User 500 ' + err)
       return res.status(500).json({
         code: config.errorCode.status500.code,
         message: config.errorCode.status500.message
       })
     }

     return res.json({
       data: result
     })
   })

1 个答案:

答案 0 :(得分:0)

您可能需要从数据库中获取所有用户:

User.find({
  _id: { $in: ids },
})...

然后代替:

return res.json({
  data: result
})

你可以这样做:

return res.json({
  data: result.filter(user => user.__v > users[user._id])
});

或者您可以尝试构建查询对象:

let query = {$or: ids.map(id => ({_id: id, __v: {$gt: users[id] }})};

并在查询中使用它:

User.find(query)...