MongoDB聚合合并和检索

MongoDB聚合合并和检索,mongodb,Mongodb,在运行聚合/合并查询之后,是否有一种方法可以确定是否插入了记录,而无需运行第二个查询 运行此聚合后,如何知道是否插入了新记录 connection.collection('settings').aggregate( [ { $match : { group_id: 2 } }, { $project: {level: 1, group:1} }, { $addFields:{item_id: 2} }, { $merge : 'items', on: ['group_id

在运行聚合/合并查询之后,是否有一种方法可以确定是否插入了记录,而无需运行第二个查询

运行此聚合后,如何知道是否插入了新记录

connection.collection('settings').aggregate( [
   { $match : { group_id: 2 } },
   { $project: {level: 1, group:1} },
   { $addFields:{item_id: 2} },
   { $merge : 'items', on: ['group_id', 'item_id'] }
])
有两种情况下无法插入记录

  • 基于索引组\u id、项目\u id存在重复项
  • 进行匹配时,如果设置中没有匹配记录

  • 我认为这是不可能的。我明白了,谢谢。有点相关,是否有一个原因使我的聚合看起来无法运行,除非我在末尾添加.toArray()。这是正常的行为吗?toArray的处理程序似乎以任何一种方式返回空数据。驱动程序中的某些操作是惰性的,尤其是查询。在$out/$merge的情况下,这些阶段本质上是写操作,但它们是通过读操作API(聚合管道)实现的,因此您仍然需要触发管道评估。例如,请参阅允许磁盘使用示例,了解在定义阶段之后但在执行之前修改管道的情况。我认为这是不可能的。我明白了,谢谢。有点相关,是否有一个原因使我的聚合看起来无法运行,除非我在末尾添加.toArray()。这是正常的行为吗?toArray的处理程序似乎以任何一种方式返回空数据。驱动程序中的某些操作是惰性的,尤其是查询。在$out/$merge的情况下,这些阶段本质上是写操作,但它们是通过读操作API(聚合管道)实现的,因此您仍然需要触发管道评估。例如,请参阅允许磁盘使用示例,了解在定义阶段后但在执行之前修改管道的情况。