要在不使用$unwind的情况下,将两个具有相同文档的数组的相等字段进行匹配,可以使用$lookup操作符和$eq操作符来实现。
假设有两个集合A和B,它们具有相同的文档字段来进行匹配。
以下是一个示例代码:
db.A.aggregate([
{
$lookup: {
from: "B",
let: { fieldToMatch: "$fieldToMatch" }, // 将要匹配的字段保存到变量中
pipeline: [
{
$match: {
$expr: { $eq: ["$fieldToMatch", "$$fieldToMatch"] } // 使用$eq操作符进行字段匹配
}
}
],
as: "matchedDocs" // 匹配到的文档将保存在这个字段中
}
}
])
在上面的示例中,我们使用$lookup操作符将集合B连接到集合A,并使用$match和$expr操作符进行字段匹配。将要匹配的字段保存到一个变量中,然后使用$eq操作符将该字段与B集合中的对应字段进行匹配。
最后,匹配到的文档将保存在"matchedDocs"字段中。
请注意,上述代码中的"fieldToMatch"应替换为实际要进行匹配的字段名称。