MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoTemplate का उपयोग करके नेस्टेड सरणी और क्वेरी रिटर्न उप-दस्तावेज़ से खींचने में सक्षम नहीं है

(1) अपडेट करें (खींचें) reply सरणी तत्व:

यह कोड दस्तावेज़ को अद्यतन करेगा; जो reply . से विशिष्ट तत्व (उप-दस्तावेज़) को हटा देता है सरणी:

// Query criteria for topic and reply
String topicId = "5e5e4d4bb431502946c15342";
String topicReplyId = "07a0293a-22a1-45fb-9aa2-775fa24e9915";

MongoOperations mongoTemplate = new MongoTemplate(MongoClients.create(), "test");
Query query = Query.query(Criteria
                               .where("topic._topicId").is(topicId)
                               .and("topic.reply._replyId").is(topicReplyId));
Update update = new Update().pull("topic.$.reply", new Document("_replyId", topicReplyId));
mongoTemplate.updateFirst(query, update, "topics"); // "topics" is the collection name


[जोड़ें संपादित करें]

(2) reply पाने के लिए एग्रीगेशन क्वेरी दस्तावेज़:

db.topics.aggregate( [
  { $unwind: "$topic" },
  { $match: { "topic._topicId": topicId } },
  { $unwind: "$topic.reply" },
  { $match: { "topic.reply._replyId": topicReplyId } },
  { $project: { _id: 0, reply: "$topic.reply" } }
] ).pretty()

यह रिटर्न:

{
        "reply" : {
                "_replyId" : "07a0293a-22a1-45fb-9aa2-775fa24e9915",
                "username" : "test1",
                "content" : "reply1",
                "date" : 1583240955561
        }
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला मॉडल लेखन त्रुटि:स्कीमा एक निर्माता नहीं है

  2. mgo क्वेरी से ObjectIdHex मान प्राप्त करें

  3. एम्बेड mongodb de.flapdoodle.embed.mongo का उपयोग करके जूनिट परीक्षण मामले

  4. विंस्टन-मोंगोडब और एक्सप्रेस-विंस्टन के साथ लॉगिंग

  5. mongodb:मैं कुल आदेश के लिए निष्पादन समय कैसे देख सकता हूं?