我有一个投影,我必须转换为java并且我得不到正确的结果,就像在使用javascript的mongo db执行器中一样。
{
$project: {"userId": 1, "followingAndNotFollowingBack": {
$setDifference: ["$following", "$follower"]}}
}
直到现在我在Java中有以下内容:
private static final ProjectionOperation PROJECTION_OPERATION = Aggregation.project(UserRelationships.FIELD_USER_ID)
.and(SetOperators.SetDifference.arrayAsSet(UserRelationships.FIELD_FOLLOWING_USER_IDS)
.differenceTo(UserRelationships.FIELD_FOLLOWER_USER_IDS))
.as(FOLLOWING_AND_NOT_FOLLOWED_BACK);
但每次null
我都会得到
有没有人看到这个问题?
答案 0 :(得分:1)
请尝试以下方法。我使用过differenceToArray
。
private static final ProjectionOperation PROJECTION_OPERATION = Aggregation.project(UserRelationships.FIELD_USER_ID)
.and(UserRelationships.FIELD_FOLLOWING_USER_IDS)
.differenceToArray(UserRelationships.FIELD_FOLLOWER_USER_IDS)
.as(FOLLOWING_AND_NOT_FOLLOWED_BACK);
另一个例子: -
db.experiments.aggregate(
[
{ $project: { A: 1, B: 1, inBOnly: { $setDifference: [ "$B", "$A" ] }, _id: 0 } }
]
)
<强>代码: - 强>
Aggregation aggregate = Aggregation.newAggregation(
Aggregation.project("A", "B").and("B").differenceToArray("A").as("inBOnly").andExclude("_id"));
答案 1 :(得分:0)
感谢您的帮助,但问题是,我在测试和生活中有不同的mongodbs 所以带有null的differencetoarray在一个版本中是null,而在另一个版本中它给了我正确的答案,所以我必须添加信息以便全部返回,如果我与null数组结合。