MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truy vấn Java Mongodb cho phạm vi ngày

Lệnh shell MongoDB (trước v3.4) cho trường hợp sử dụng của bạn là:

db.collection.aggregate([
    {
        "$redact": {
            "$cond": [
                { "$gt": [ "$pub-date", "$rel-date" ] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
])

Dịch lệnh này sang Java bạn sẽ nhận được:

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());
}

Đưa ra một bộ sưu tập với những tài liệu này ...

{
    "_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")
}

.. mã Java trên sẽ in ra ...

{ "_id" : { "$oid" : "5acb662756539a6734e64e4a" }, "title" : "WingsOfSmoke", "pub-date" : { "$date" : 1383350400000 }, "rel-date" : { "$date" : 1380672000000 } }

... vì pub-date của tài liệu này (2013-11-02T00:00:00.000Z) sau rel-date của nó (2013-10-02T00:00:00.000Z).

Lưu ý:$where toán tử tương đương về mặt chức năng nhưng việc sử dụng toán tử đó đi kèm với một số hạn chế :



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chuyển đổi truy vấn Mongo sang Laravel, elemMatch lồng nhau

  2. MongoDB lỗi nghiêm trọng trong danh sách đen

  3. Lệnh LIKE trong MongoDB (mongomapper)

  4. Lưu trữ null so với hoàn toàn không lưu trữ khóa trong MongoDB

  5. Tôi nên chọn gì:MongoDB / Cassandra / Redis / CouchDB?