是否可以匹配和合并数据集中的实体,其中一个实体具有代码1而另一个实体具有代码2?我尝试使用" merge"来解决这个问题。和" eq","代码","代码" +1,但这会在代码3中合并(这不是我想要的)。
{
"_id": "sample-data",
"type": "pipe",
"source": {
"type": "embedded",
"entities": [{
"_id": "a1",
"name": "A",
"code": 1
}, {
"_id": "a2",
"name": "A",
"code": 2
}, {
"_id": "a3",
"name": "A",
"code": 3
}, {
"_id": "b1",
"name": "B",
"code": 1
}]
}
}
答案 0 :(得分:2)
是。使用[“if”]有几种方法可以做到这一点,但我更喜欢使用[“in”]进行简单的比较:
{
"_id": "merge-sample",
"type": "pipe",
"source": {
"type": "merge",
"datasets": ["sample-data sd"],
"equality": [
["eq",
["in", "sd.code",
["list", 1, 2]
],
["in", "sd.code",
["list", 1, 2]
]
]
],
"identity": "first",
"strategy": "compact",
"version": 2
}
}
在测试数据上运行此操作将导致数据集如下所示:
[
{
"$ids": [
"~:sample-data:a1",
"~:sample-data:a2",
"~:sample-data:b1"
],
"sample-data:code": [
1,
2
],
"sample-data:name": [
"A",
"B"
]
},
{
"$ids": [
"~:sample-data:a3"
],
"sample-data:code": 3,
"sample-data:name": "A"
}
]