什么是在猫鼬中使用distinct + find的好方法

时间:2017-05-23 19:09:31

标签: node.js mongodb rest mongoose mongodb-query

我尝试进行查询以输出具有特定元素的文档,但也只有另一个唯一元素,例如:

 Temp.find({ UId: UserID }).sort({ "created_at" : -1 }).exec( function (err, data) {
    console.log(data + "     " + err);
    callback(data);
  });

}; 返回:

{
    "updatedAt": "2017-05-23T18:18:19.000Z",
    "created_at": "2017-05-23T18:18:19.000Z",
    "UId": "58f8954c3602b80552b6f1fb",
    "value": 69,
    "SerialNumber": "IIOJOIMJ",
    "_id": "59247cebd96d5406651c791e",
    "__v": 0
  },
  {
    "updatedAt": "2017-05-23T16:34:22.000Z",
    "created_at": "2017-05-23T16:34:22.000Z",
    "UId": "58f8954c3602b80552b6f1fb",
    "value": 70,
    "SerialNumber": "IIOJOIMJ",
    "_id": "5924648e56628d005ad15f0e",
    "__v": 0
  }

但我希望查询只返回不同的元素,以便只返回2个文档中的一个 我试着这样做:

Temp.find({ UId: UserID }).sort({ "created_at" : -1 }).distinct('SerialNumber', function (err, data) {

    console.log(data + "     " + err);
    callback(data);
  });

但是这会导致我的应用崩溃。我怎样才能最好地解决这个问题?

谢谢!

修改

我看了@gaganshera解决方案,它的确有效!但它是否也可以用它来制作文件的其余部分?

1 个答案:

答案 0 :(得分:1)

使用distinct功能,您可以像这样指定条件和不同的列

Temp.distinct('SerialNumber', { UId: UserID })