gpt4 book ai didi

java - 如何通过 mongodb 模板在 Java 中使用 $redact 和聚合

转载 作者:行者123 更新时间:2023-12-02 14:22:40 25 4
gpt4 key购买 nike

我无法使用 mongodb 模板添加密文下面是我的 mongo 代码,它工作正常并使用 sping mongo 1.8.5

  db.abc.aggregate([
{ "$geoNear" : { near : { "type" : "Point", "coordinates" : [ 72.5, 19.8 ]
}, distanceField: "dist.calculated", maxDistance: 500000, includeLocs: "dist.location", num: 5, limit: 200, spherical: true } },
{ "$unwind" : "$items" },
{ "$redact" : {
"$cond" : {
if : { "$eq" : [ { "$cmp" : [ "$items.address", "$dist.location" ] }, 0 ] },
then : "$$KEEP",
else : "$$PRUNE"
}
}
}
])

这是我的java代码,它不像上面的mongo代码那样工作

 Point point=new Point(longi,lat);
NearQuery nearQuery = NearQuery.near(point).maxDistance(1000).spherical(true);
Aggregation agg = Aggregation.newAggregation(Aggregation.geoNear(nearQuery, "calculated"),Aggregation.unwind("items"),
Aggregation.group("merchantId", "_id", "catalogTypeId", "catalogStatusId", "departmentName",
"categoryName", "subCategoryName", "serviceFlag", "date", "availability", "distance",
"commissionPercentage", "createdBy", "updatedBy", "departmentId", "categoryId",
"subCategoryId", "createdOn", "updatedOn").push("items").as("items"),
Aggregation.skip(skip), Aggregation.limit(limit)

);

谁能帮我找出如何在java中运行这个查询

我的文档结构

{ "_id" : "CAT106679778", "_class" : "com.ikarma.core.catalog.domain.CatalogForAdminAndMerchant", "merchantId" : "M117442443", "catalogTypeId" : "catalogTypeProduct", "catalogStatusId" : "catalogStatusDraft", "items" : [ { "name" : "Jewelry", "description" : "Jewelry", "price" : "1000", "itemStatusId" : "catalogStatusDraft", "itemStatusName" : "Draft", "unitMeasure" : 30, "stock" : NumberInt("12"), "availableStock" : NumberInt("12"), "orderStock" : NumberInt("0"), "photos" : [ "https://clappilystorage.blob.core.windows.net/clappilymerchant/M117442443/MyProduct/GiftsAnniversary GiftsJewelryJewelry/1520415128722cheers.jpg" ], "activeFlag" : "undefined", "tags" : [ "Jewelry", "Jewelry" ], "discount" : "25", "advancePayment" : "10", "unitName" : "Gm", "itemId" : NumberLong("78921671000"), "videos" : [ null, null, null ], "commissionPercentage" : 10, "commissionAmount" : 0, "itemIsDeleted" : "false", "netSellingPrice" : 750, "starCount" : 0, "deliveryCharges" : 0, "customItemCode" : "zdfg", "taxes" : 0, "perishable" : false, "itemsLat" : 21, "itemsLong" : 74, "ratingAvg" : 0, "address" : { "type" : "Point", "coordinates" : [ 74, 21 ] } }, { "name" : "Jewelry", "description" : "Jewelry", "price" : "1000", "itemStatusId" : "catalogStatusDraft", "itemStatusName" : "Draft", "unitMeasure" : 30, "stock" : NumberInt("12"), "availableStock" : NumberInt("12"), "orderStock" : NumberInt("0"), "photos" : [ "https://clappilystorage.blob.core.windows.net/clappilymerchant/M117442443/MyProduct/GiftsAnniversary GiftsJewelryJewelry/1520415128722cheers.jpg" ], "activeFlag" : "undefined", "tags" : [ "Jewelry", "Jewelry" ], "discount" : "25", "advancePayment" : "10", "unitName" : "Gm", "itemId" : NumberLong("1347268704"), "videos" : [ null, null, null ], "commissionPercentage" : 10, "commissionAmount" : 0, "itemIsDeleted" : "false", "netSellingPrice" : 750, "starCount" : 0, "deliveryCharges" : 0, "customItemCode" : "zdfg", "taxes" : 0, "perishable" : false, "itemsLat" : 22, "itemsLong" : 75, "ratingAvg" : 0, "address" : { "type" : "Point", "coordinates" : [ 75, 22 ] } }, { "name" : "Jewelry", "description" : "Jewelry", "price" : "1000", "itemStatusId" : "catalogStatusDraft", "itemStatusName" : "Draft", "unitMeasure" : 30, "stock" : NumberInt("12"), "availableStock" : NumberInt("12"), "orderStock" : NumberInt("0"), "photos" : [ "https://clappilystorage.blob.core.windows.net/clappilymerchant/M117442443/MyProduct/GiftsAnniversary GiftsJewelryJewelry/1520415128722cheers.jpg" ], "activeFlag" : "undefined", "tags" : [ "Jewelry", "Jewelry" ], "discount" : "25", "advancePayment" : "10", "unitName" : "Gm", "itemId" : NumberLong("10043410600"), "videos" : [ null, null, null ], "commissionPercentage" : 10, "commissionAmount" : 0, "itemIsDeleted" : "false", "netSellingPrice" : 750, "starCount" : 0, "deliveryCharges" : 0, "customItemCode" : "zdfg", "taxes" : 0, "perishable" : false, "itemsLat" : 23, "itemsLong" : 76, "ratingAvg" : 0, "address" : { "type" : "Point", "coordinates" : [ 76, 23 ] } } ], "departmentName" : "Gifts", "categoryName" : "Anniversary Gifts", "subCategoryName" : "Jewelry", "serviceFlag" : "", "updatedBy" : [ { "_id" : "M117442443", "name" : "Sales Team" } ], "createdBy" : [ { "_id" : "M117442443", "name" : "Sales Team" } ], "departmentId" : "5948c14be4b0d3372e47423d", "categoryId" : "5948cc1fe4b0d3372e474287", "catalogIsDeleted" : "false", "subCategoryId" : "5948cd46e4b0d3372e474291", "createdOn" : ISODate("2018-03-07T15:03:34.877+05:30"), "updatedOn" : ISODate("2018-03-08T13:09:53.373+05:30"), "availability" : [ { "startTime" : "null", "endTime" : "null" }, { "startTime" : "null", "endTime" : "null" }, { "startTime" : "null", "endTime" : "null" } ], "distance" : "0", "merchantStatus" : "Accepted" }

谢谢

最佳答案

您可以使用AggregationOperation构建$redact聚合阶段。

您将需要 1.8.5 版本。

AggregationOperation redactOperation = aggregationOperationContext -> {
Map<String, Object> map = new LinkedHashMap<>();
BasicDBObject cmp = new BasicDBObject("$cmp", Arrays.asList( "$items.address","$dist.location"));
map.put("if", new BasicDBObject("$eq", Arrays.asList(cmp, 0)));
map.put("then", "$$KEEP");
map.put("else", "$$PRUNE");
return new BasicDBObject("$redact", new BasicDBObject("$cond", map));
};

Aggregation agg = Aggregation.newAggregation(
Aggregation.geoNear(nearQuery, "calculated"),
Aggregation.unwind("items"),
redactOperation,
Aggregation.skip(skip),
Aggregation.limit(limit)
);

关于java - 如何通过 mongodb 模板在 Java 中使用 $redact 和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49291924/

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