次のシェルクエリのように減算演算子を使用していますが、Javaで減算を行う方法を見つけることができません。MongoDB Aggregate Subtract Java Driver 3.3
db.deviceDetail.aggregate([
{$match: {'accountId':23, 'status':'Stopped'}},
{'$project': {
'durationDiff': {'$subtract': [1479093620000, '$durationDate']},
'stopStartDiff': {'$subtract': [1479093620000, '$stopStart']},
'stopStart': 1,
'durationDate': 1,
'_id':0
}
},
{'$match': {$or:[{'durationDiff': {'$gt': 0}}, {'stopStartDiff': {'$gt': 0}}]}}
])
Java APIは減算演算子をサポートしていないようですが、下のdurationDiffとstopStartDiffの計算をどのように定義する必要がありますか?
AggregateIterable<Document> rslt = coll.aggregate(Arrays.asList(
match(and(eq("assetName", "accountId"), eq("assetName", "accountId"))),
project(fields(
excludeId(),
include(
"durationDiff", ...,
"stopStartDiff", ...,
"stopStart",
"durationDate"
)
)),
match(or(gt("durationDiff", 0), gt("stopStartDiff", 0)))
));
サンプル文書:
{
"_id" : ObjectId("563064a4e4b0ea032ae14f77"),
"accountId" : NumberLong(23),
"stopStart" : NumberLong("1460133175000"),
"status" : "Stopped",
"durationDate" : NumberLong("1460133175000")
}
サンプル文書を提供できますかコードをテストする? – notionquest