【问题标题】:How to pass input params in node js for joining collections?如何在节点 js 中传递输入参数以加入集合?
【发布时间】:2016-09-20 04:31:59
【问题描述】:

我的请求集合,

{ 
  "_id" : ObjectId("57e0b8cd5eeba5140b270ca8"), 
  "sent_id" : "57dfcdc21ad7cf658860926d", 
  "recieved_id" : "57dfcddf1ad7cf658860926e", 
  "status" : 1 
}

我的个人资料集

 { 
   "_id" : ObjectId("57dfcddf1ad7cf658860926e"), 
   "firstname" : "John", 
   "lastname" : "David", 
   "profilename" : "John David", 
   "email" : "john@gmail.com"
  }

在这里我想用 sent_id(collection) = _id(profile) 加入收藏,我尝试了下面的代码,

exports.getrequestsdetails = function (req, res) {
    var params = req.params;console.log(params)
    var record = db.collection('requests');
    var item = {"sent_id": params.id,"status":1};
  record.aggregate([
    {
      $lookup:
        {
          from: "profile",
          localField: "sent_id",
          foreignField: "_id",
          as: "profilename"
        }
   }
]).toArray((err, result) => {
   if (err){ return 
    }
      if(result){
            response = {status:'success',data:result};
        } else{
            response = {status:'fail',data:[]};
        }
      res.send(response);
  });

};

这是我无法看到集合已加入的结果,

    {
  "status": "success",
  "data": [
    {
      "_id": "57dfeb279559c37854adb92f",
      "profilename": []
    },
    {
      "_id": "57e0b8cd5eeba5140b270ca8",
      "sent_id": "57dfcdc21ad7cf658860926d",
      "recieved_id": "57dfcddf1ad7cf658860926e",
      "status": 1,
      "profilename": []
    }
  ]
}

使用上面的代码我遇到了 2 个问题,

1)我在比较 sent_id 和 _id ,这里 _id 是一个对象类型,那么我该如何比较它们。

2)我想将发送的 id 作为参数传递,我该怎么做?

任何人都可以建议我帮助,因为我是 node 和 mongo 的新手。谢谢。

【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:
    1. John 的 ID 是 57dfcddf1ad7cf658860926_e_,它不等于 request.sent_id 57dfcdc21ad7cf658860926_d_。因此没有加入。

    2. 您需要在 aggregate() 调用中添加 $match 子句

      $match: {sent_id: params.id}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多