【发布时间】:2021-07-15 07:13:54
【问题描述】:
我有一个包含这种形式的文档的集合:
{
"fields_names": ["field1", "field2", "field3"]
"field1": 1,
"field2": [1, 2, 3]
"field3": "12345"
}
其中 field1、field2、field3 对于每个文档都是“动态的”(我为每个文档都有“fields_names”数组中的字段名称)
我想使用聚合框架测试 2 个文档是否相等。 我使用 $lookup 阶段来获取另一个文档。 我的问题是:如何“迭代”我的收藏的整个字段?
db.collection.aggregate([
{
{$match: "my_id": "test_id"},
{$lookup:
from: "collection"
let: my_id: "$my_id", prev_id: "$_id"
pipeline: [
{$match: "my_id": "$$my_id", "_id": {$ne: "$$prev_id"}}
]
as: "lookup_test"
}
}])
在查找的管道中,我想迭代“fields_names”数组以获取字段的名称,然后访问它们的值并在“原始文档”(不是 $lookup)和其他文档($lookup 文档)。 或者:只是迭代所有字段(不包括“fields_names”数组)
我想用所有具有相同字段值的文档填充“lookup_test”数组..
【问题讨论】:
-
请根据您的示例文档添加您的预期结果。
标签: mongodb aggregation-framework aggregate aggregation