Node.js 如何与猫鼬一起使用unionWith?
我试图在MongoDB中获取两个独立的文档,并通过createdAt对它们进行排序。MongoDB文档提到$unionWith,但Mongoose没有类似的内容。有什么建议吗?我建议您使用聚合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
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:[]}而不是使用集合名称?我已经根据我进一步了解的内容更新了我的答案。这是个坏主意。如果每个文档上都有一百万条记录,那么你的第一个答案就可以了!谢谢,伙计!