आपके उपयोग के मामले के लिए MongoDB (v3.4 से पहले) शेल कमांड है:
db.collection.aggregate([
{
"$redact": {
"$cond": [
{ "$gt": [ "$pub-date", "$rel-date" ] },
"$$KEEP",
"$$PRUNE"
]
}
}
])
इस कमांड का जावा में अनुवाद करने पर आपको यह मिलेगा:
MongoClient mongoClient = ...;
MongoCollection<Document> collection = mongoClient.getDatabase("...").getCollection("...");
List<Document> documents = collection.aggregate(Arrays.asList(
new Document("$redact", new Document("$cond",
Arrays.asList(new Document("$gt", Arrays.asList("$pub-date", "$rel-date")), "$$KEEP", "$$PRUNE"))
))).into(new ArrayList<>());
for (Document document : documents) {
System.out.println(document.toJson());
}
इन दस्तावेज़ों के संग्रह को देखते हुए ...
{
"_id" : ObjectId("5acb40d27d63b61cb002bafe"),
"title" : "WingsOfFire",
"pub-date" : ISODate("2013-10-02T00:00:00.000Z"),
"rel-date" : ISODate("2013-11-02T00:00:00.000Z")
}
{
"_id" : ObjectId("5acb662756539a6734e64e4a"),
"title" : "WingsOfSmoke",
"pub-date" : ISODate("2013-11-02T00:00:00.000Z"),
"rel-date" : ISODate("2013-10-02T00:00:00.000Z")
}
.. उपरोक्त जावा कोड प्रिंट होगा ...
{ "_id" : { "$oid" : "5acb662756539a6734e64e4a" }, "title" : "WingsOfSmoke", "pub-date" : { "$date" : 1383350400000 }, "rel-date" : { "$date" : 1380672000000 } }
... क्योंकि इस दस्तावेज़ की pub-date
(2013-11-02T00:00:00.000Z) इसके rel-date
. के बाद है (2013-10-02T00:00:00.000Z)।
नोट:$where
ऑपरेटर कार्यात्मक रूप से समकक्ष है लेकिन उस ऑपरेटर का उपयोग कुछ सीमाओं के साथ आता है। /ए> :