【发布时间】:2019-09-03 09:59:48
【问题描述】:
我们正在尝试打印从不同集合中检索到的 2 个数组的差异,如下所示。但是,setdifference 似乎不起作用。
可能有什么问题?
预期输出:
{ "request" : [{ "requestId" : "REQ4" }], "unsent" : ["1234"] }
代码摘录和阶段输出如下:
AggregateIterable<Document> diff =
scrips.aggregate(Arrays.asList(
Aggregates.group(null, Accumulators.addToSet("global", "$scrip"))
,Aggregates.lookup("requests",new ArrayList<Bson>(Arrays.asList(new Document(
Document.parse("{\"$match\": { \"requestId\":'" + reqparam + "'}}")))),"request")
[此处输出:{ "_id" : null, "global" : ["3553", "5647", "0001"], "request" : [{ "_id" : { "$oid" : "5d6e37db1886a24e70b88b42 " }, "requestId" : "REQ4", "scrips" : ["3553", "5647", "1234"] }] }]
,Aggregates.project(
Projections.fields(
Projections.excludeId(),
Projections.computed("unsent",
Document.parse("{ $setDifference: [\"$request.scrips\", \"$global\"] }"))
)
)
[此处输出:{“request”:[{“requestId”:“REQ4”}],“未发送”:[[“3553”,“5647”,“1234”]]}]
【问题讨论】:
-
您能添加一个您正在处理的示例文档吗?
标签: mongodb mongodb-query aggregation-framework mongodb-java-3.3.0