将 MongoDB 查询转换为 spring 数据 mongo 模板
Convert MongoDB query to spring data mongo template
我需要将以下查询转换为 spring 数据 mongo 模板。我看过很多例子,但是 none 里面有 setunion 和数组
{
$project: {
"datastreamId": 1,
"datastreamName": 1,
"deviceId": 1,
"searchTags": { $arrayElemAt: [ "$searchTags", 0 ] },
"datastreamPos": {$arrayElemAt:[{$split: ["$datastreamId" , "_"]}, 1]},
"destId": "$destNode.id",
"dataBucketId": "$dataBucketNode.id",
"assetId": "$assetNode.id",
"hierarchy": { $setUnion: [ "$hierarchy", [{id: "$datastreamId", name: "$datastreamName", levelType: "Channel", level:6}] ] }
}
}
像这样使用 ConcatArrays 在 SetUnion 中创建一个数组
Document arrayDocument = new Document();
arrayDocument.put("id", "$datastreamId");
arrayDocument.put("name", "$datastreamName");
arrayDocument.put("levelType", "Channel");
arrayDocument.put("level", 6);
ArrayOperators.ConcatArrays array = ArrayOperators.ConcatArrays.arrayOf(Collections.singletonList(arrayDocument));
SetOperators.SetUnion setUnion = SetOperators.SetUnion.arrayAsSet("hierarchy").union(array);
现在在 Projection 中使用这个 setUnion。
注意:由于我们只在 $concatArrays
内为 List 提供单个元素,它会将其转换为您想要的数组。
我需要将以下查询转换为 spring 数据 mongo 模板。我看过很多例子,但是 none 里面有 setunion 和数组
{
$project: {
"datastreamId": 1,
"datastreamName": 1,
"deviceId": 1,
"searchTags": { $arrayElemAt: [ "$searchTags", 0 ] },
"datastreamPos": {$arrayElemAt:[{$split: ["$datastreamId" , "_"]}, 1]},
"destId": "$destNode.id",
"dataBucketId": "$dataBucketNode.id",
"assetId": "$assetNode.id",
"hierarchy": { $setUnion: [ "$hierarchy", [{id: "$datastreamId", name: "$datastreamName", levelType: "Channel", level:6}] ] }
}
}
像这样使用 ConcatArrays 在 SetUnion 中创建一个数组
Document arrayDocument = new Document();
arrayDocument.put("id", "$datastreamId");
arrayDocument.put("name", "$datastreamName");
arrayDocument.put("levelType", "Channel");
arrayDocument.put("level", 6);
ArrayOperators.ConcatArrays array = ArrayOperators.ConcatArrays.arrayOf(Collections.singletonList(arrayDocument));
SetOperators.SetUnion setUnion = SetOperators.SetUnion.arrayAsSet("hierarchy").union(array);
现在在 Projection 中使用这个 setUnion。
注意:由于我们只在 $concatArrays
内为 List 提供单个元素,它会将其转换为您想要的数组。