Node.js 如何在MongoDB中查找具有唯一值的文档?
我有一个集合,里面有几个文档,其中包含要使用另一个系统处理的作业。我从这个表中查找5个对象,如下所示: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
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}}}}是的,这就是我所做的,它工作得很好,谢谢!