gpt4 book ai didi

java - 如何从 Java Spring Boot 执行复杂的 MongoDB native 查询

转载 作者:行者123 更新时间:2023-12-01 16:13:39 25 4
gpt4 key购买 nike

我有一个使用 3 个集合创建 View 的复杂查询。查询是在 native 级别编写的。我需要从 Java 执行该查询,有什么方法可以从 Java 级别执行这些类型的查询。也许是一个将 MongoDB native 查询作为字符串并在数据库级别执行的函数

db.createView('TARGET_COLLECTION', 'SOURCE_COLLECTION_1', [
{
$facet: {
SOURCE_COLLECTION_1: [
{$match: {}},
{ $project: { "sourceId": {$toString: "$_id"}, "name": 1, "image": "$logo" }}
],
SOURCE_COLLECTION_2: [
{$limit: 1},
{
$lookup: {
from: 'SOURCE_COLLECTION_2',
localField: '__unexistingfield',
foreignField: '__unexistingfield',
as: '__col2'
}
},
{$unwind: '$__col2'},
{$replaceRoot: {newRoot: '$__col2'}},
{ $project: { "sourceId": {$toString: "$_id"}, "name": 1, "image": 1 }}
],
SOURCE_COLLECTION_3: [
{$limit: 1},
{
$lookup: {
from: 'SOURCE_COLLECTION_3',
localField: '__unexistingfield',
foreignField: '__unexistingfield',
as: '__col2'
}
},
{$unwind: '$__col2'},
{$replaceRoot: {newRoot: '$__col2'}},
{ $project: { "sourceId": {$toString: "$_id"}, "name": 1, "image": "$logo" }}
]
},
},
{$project: {data: {$concatArrays: ['$SOURCE_COLLECTION_1', '$SOURCE_COLLECTION_2', '$SOURCE_COLLECTION_3']}}},
{$unwind: '$data'},
{$replaceRoot: {newRoot: '$data'}}
])

最佳答案

一个例子:

考虑集合中的文档:

{ _id: 1234, name: "J. Doe", colors: [ "red", "black" ] }

以及来自 mongo shell 的以下聚合:

db.collection.agregate( [
{ $project: { _id: 0, colors: 1 } }
] )

这将返回:{ "colors": [ "red", "black"] }

也可以使用以下命令运行:

db.runCommand( { 
aggregate: "collection",
pipeline: [ { $project: { _id: 0, colors: 1 } } ],
cursor: { }
} )

并且,它使用 Spring Data 的 MongoTemplate 进行翻译:

String jsonCommand = "{ aggregate: 'collection', pipeline: [ { $project: { _id: 0, colors: 1 } } ], cursor: { } }";
Document resultDoc = mongoTemplate.executeCommand(jsonCommand);

输出文档resultDoc的格式如下:

{
"cursor" : {
"firstBatch" : [
{
"colors" : [
"red",
"black"
]
}
],
"id" : NumberLong(0),
"ns" : "test.colors"
},
"ok" : 1
}

要了解有关 db.runCommand(...) 方法的更多信息,请参阅 MongoDB 文档:Database CommandsDatabase Command Aggregate .

关于java - 如何从 Java Spring Boot 执行复杂的 MongoDB native 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62461582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com