Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在MongoDB中查找具有唯一值的文档?_Node.js_Mongodb_Mongoose_Nosql - Fatal编程技术网

Node.js 如何在MongoDB中查找具有唯一值的文档?

Node.js 如何在MongoDB中查找具有唯一值的文档?,node.js,mongodb,mongoose,nosql,Node.js,Mongodb,Mongoose,Nosql,我有一个集合,里面有几个文档,其中包含要使用另一个系统处理的作业。我从这个表中查找5个对象,如下所示: Work.find({status: 'new'}) .sort({priority: 'desc'}) .limit(5) .exec(function (err, work){}) 这些文档上还有另一个字段,用于确定同一时间只能运行一个具有给定唯一值的作业 例如,这3项工作: {uniqueVal: 1, priority: 1, type: "scrape", status

我有一个集合,里面有几个文档,其中包含要使用另一个系统处理的作业。我从这个表中查找5个对象,如下所示:

Work.find({status: 'new'})
  .sort({priority: 'desc'})
  .limit(5)
  .exec(function (err, work){})
这些文档上还有另一个字段,用于确定同一时间只能运行一个具有给定唯一值的作业

例如,这3项工作:

{uniqueVal: 1, priority: 1, type: "scrape", status:"new"}
{uniqueVal: 1, priority: 1, type: "scrape", status:"new"}
{uniqueVal: 2, priority: 1, type: "scrape", status:"new"}
有2条记录的唯一值为1。我能做些什么来只提取一条值为1的记录吗

注意:这些值与示例中的值不同,它们是其他文档的objectid


我研究了Distinct(),但它似乎只返回实际的唯一值,而不是文档本身。

我认为最好的选择是使用聚合

您可以通过uniqueVal创建$group

并对其他值使用$first

您检查过聚合了吗?谢谢您提供的信息。我已经开始计算聚合,但遇到了一些问题。聚合似乎返回了全新的文档。我希望我的实际工作对象包含每个字段。_id必须是工作对象的_id,而不是我的唯一值$组似乎做了相反的事情。但也许我可以用它来获得我的唯一对象的列表,其中包含工作对象的_id,然后运行$or查询来收回这些文档。我想我可以在$group阶段做到这一点,你可以做{$group:{{u id:{$uniqueVal],tmpId:{$first:$id}}}}是的,这就是我所做的,它工作得很好,谢谢!