gpt4 book ai didi

java - 如何使用 MongoTemplate 将 Mongo Shell 脚本转换为 Java?

转载 作者:行者123 更新时间:2023-12-01 18:45:57 25 4
gpt4 key购买 nike

我的 Mongo Shell 脚本:

db.getCollection('order').aggregate([
{ $match: { clientId: "test@gmail.com" } },
{ $lookup: { from: 'ordereddevice', localField: 'id', foreignField: 'order', as: 'orderedDevices' } }
])

我使用的是这样的:

MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);
MongoDatabase database = mongoClient.getDatabase("db_name");
MongoCollection < Document > collection = database.getCollection("order");
List < Document > pipeline = Arrays.asList(new Document().append("$match", new Document().append("clientId", "test@gmail.com")), new Document().append("$lookup", new Document().append("from", "ordereddevice").append("localField", "id").append("foreignField", "order").append("as", "orderedDevices")));
Block < Document > printBlock = new Block < Document > () {
@Override public void apply(final Document document) {
System.out.println(document.get("_id"));
}
};
collection.aggregate(pipeline).forEach(printBlock);

但是它会重新连接 MongoDB,所以我正在寻找一种使用 MongoTemplate 来做到这一点的方法

最佳答案

谢谢你的文档,自己完成吧!哈哈

    @Autowired
MongoTemplate mongoTemplate;

@Override
public List<OrderedDeviceByOrderId> findOrderedDeviceByOrderId(String clientid) {
AggregationOperation lookup = Aggregation.lookup("ordereddevice","_id","order","Devices");
AggregationOperation match = Aggregation.match(Criteria.where("clientId").is(clientid));
Aggregation agg = Aggregation.newAggregation(match, lookup);

AggregationResults<OrderedDeviceByOrderId> results = mongoTemplate.aggregate(agg, "order", OrderedDeviceByOrderId.class);
List<OrderedDeviceByOrderId> orderedDeviceByOrderId = results.getMappedResults();

orderedDeviceByOrderId.forEach(s -> System.out.println(s));
return orderedDeviceByOrderId;
}

关于java - 如何使用 MongoTemplate 将 Mongo Shell 脚本转换为 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59840314/

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