मैंने आपके mongo
की कोशिश की खोल और मोंगोडीबी स्प्रिंग जावा कोड। शेल कोड ठीक काम करता है, लेकिन संबंधित जावा कोड not()
. का उपयोग करता है काम नहीं करता (मुझे नहीं पता क्यों)।
यहां उसी कार्यक्षमता के साथ काम करने का एक और तरीका है जिसे आप ढूंढ रहे हैं:
मैं निम्नलिखित इनपुट दस्तावेज़ों का उपयोग कर रहा हूँ:
{ _id: 1, createdOn: ISODate("2020-03-21T12:05:00") },
{ _id: 2, createdOn: ISODate("2020-03-28T18:33:00") },
{ _id: 3, createdOn: ISODate("2020-03-24T01:56:00") }
और, आज की तारीख . मानते हुए :ISODate("2020-03-24T02:50:04.992Z")
, परिणाम _id: 3
. के साथ दस्तावेज़ को बाहर कर देना चाहिए , जहां createdOn
आज . के भीतर है ।
mongo
शेल क्वेरी:
db.collection.find( {
$or: [
{ createdOn: { $gt: ISODate("2020-03-24T23:59:59.99") } },
{ createdOn: { $lt: ISODate("2020-03-24T00:00:00") } }
]
} )
यह _id
. के साथ दस्तावेज़ लौटाता है का 1
और 2
(इनमें आज की तारीख शामिल नहीं है)।
संबंधित जावा कोड:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd H:m:s");
Date fromDate = dateFormat.parse("2020-03-24 00:00:00");
Date toDate = dateFormat.parse("2020-03-24 23:59:59");
Criteria c = new Criteria().orOperator(
Criteria.where("createdOn").lt(fromDate),
Criteria.where("createdOn").gt(toDate) );
Query q = Query.query(c);
MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "testDB");
List<Document> result = mongoOps.find(q, Document.class, "collection");
result.forEach(doc -> System.out.println(doc.toJson()));