Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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 如何与猫鼬一起使用unionWith?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 如何与猫鼬一起使用unionWith?

Node.js 如何与猫鼬一起使用unionWith?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我试图在MongoDB中获取两个独立的文档,并通过createdAt对它们进行排序。MongoDB文档提到$unionWith,但Mongoose没有类似的内容。有什么建议吗?我建议您使用聚合 Model.aggregate([ { $lookup: { from: "fromCollection", localField: "fieldName", foreignField: "fieldName", as: "joined

我试图在MongoDB中获取两个独立的文档,并通过createdAt对它们进行排序。MongoDB文档提到$unionWith,但Mongoose没有类似的内容。有什么建议吗?

我建议您使用聚合

Model.aggregate([
{ $lookup: { from: "fromCollection", localField: "fieldName", foreignField: "fieldName", as: "joinedCollection" } }
])

我建议您使用聚合

Model.aggregate([
{ $lookup: { from: "fromCollection", localField: "fieldName", foreignField: "fieldName", as: "joinedCollection" } }
])

是的,您可以始终使用模式中的聚合方法并插入有效的MongoDB查询

它看起来像这样:

const results = await MyModel.aggregate([
    {
      $unionWith: { /*rest of the query here*/ },
    }
  ];
);
编辑:正如Dani所建议的,$lookup也可以根据您想要执行的操作来工作,在您的用例中,它实际上可能更简单

Edit2:看起来您希望在一个数组中包含来自不同集合的两个不同文档,按字段排序。这不是$lookup所做的


为什么不先获取这两个文档,然后再将它们放入数组中?

是的,您可以始终使用模式中的聚合方法并插入有效的MongoDB查询

它看起来像这样:

const results = await MyModel.aggregate([
    {
      $unionWith: { /*rest of the query here*/ },
    }
  ];
);
编辑:正如Dani所建议的,$lookup也可以根据您想要执行的操作来工作,在您的用例中,它实际上可能更简单

Edit2:看起来您希望在一个数组中包含来自不同集合的两个不同文档,按字段排序。这不是$lookup所做的


为什么不先获取这两个文档,然后再将它们放入数组,然后再获取它们?

好的,总之,应该只通过$unionWith完成。像这样的东西会有用的

const results = await MyModel.aggregate([
    {
      $unionWith: { coll: 'documentYouWantToUnionWith' }
    }
  ];
);

以下是Mongo文档的链接:

好的,总之,应该只通过$unionWith完成。像这样的东西会有用的

const results = await MyModel.aggregate([
    {
      $unionWith: { coll: 'documentYouWantToUnionWith' }
    }
  ];
);

以下是Mongo文档的链接:

$lookup的工作原理与连接类似,对吗?那不行。因为这些是独立的文件。没有外域。我需要获取它们,它们都是通过createdAt$lookup排序返回的,就像连接一样,对吗?那不行。因为这些是独立的文件。没有外域。我需要把它们都取出来,然后通过CreatedAt将它们分类返回,我正试图这么做。我可以让它与Moogose导出的模型一起工作吗$unionWith:{coll:OrderImportLog(),pipeline:[]}而不是使用集合名称?我已经根据我进一步了解的内容更新了我的答案。这是个坏主意。如果每个文档上都有一百万条记录,那么你的第一个答案就可以了!谢谢,伙计!我正试着这么做。我可以让它与Moogose导出的模型一起工作吗$unionWith:{coll:OrderImportLog(),pipeline:[]}而不是使用集合名称?我已经根据我进一步了解的内容更新了我的答案。这是个坏主意。如果每个文档上都有一百万条记录,那么你的第一个答案就可以了!谢谢,伙计!