Mongodb - 按id和嵌入数组值搜索

时间:2016-01-19 21:25:24

标签: javascript node.js mongodb

我正在尝试编写一个函数,该函数将按ID搜索对象,以及对象内的嵌入数组中是否包含值。

    {
"_id" : ObjectId("569bea91c0e1fee4063527ac"),
"user" : ObjectId("568c65174fee132c36e199dd"),
"votes" : 9,
"image" : "./modules/deals/client/img/uploads/1546f914dba7e1732ea853cd70d79148.jpg",
"price" : "12.95",
"retailer" : "argos.co.uk",
"voters" : [{

    "user" : ObjectId("568c65174fee132c36e199dd"),
     },
     {
     "user" : ObjectId("568c65174fee132c36e199dd"),
     },
     {
     "user" : ObjectId("568c65174fee132c36e199dd"),

}]

我想通过_id和elections.user搜索

我相信我需要正确完成此功能

exports.dealByIdAndVoter = function(req, res) {
    Deal.count({

            $where: function () {


            }

    },
        function(err, dealByIdAndVoter) {
            if (err) {
                return res.status(400).send({
                    message: errorHandler.getErrorMessage(err)
                });
            } else {
                console.log(dealByIdAndVoter);
                var data = {};
                data.count = dealByIdAndVoter;
                res.json(data);
            }
        });
};

1 个答案:

答案 0 :(得分:2)

如果您不需要使用$where功能,可以使用$or运算符以这种方式构建查询:

Deal
  .find({
    $or: [
      // Match by _id
      { _id: req.id },
      // Match by any user in the 'voters' array with a matching 'user' field.
      { 'voters.$.user': req.id }
    ]
  })
  .count(function(err, count) {
    // Handle error here

    res.json(count);
  });