MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Tidak dapat menarik dari array bersarang dan sub-dokumen pengembalian kueri menggunakan MongoTemplate

(1) Perbarui (tarik) reply elemen larik:

Kode ini akan memperbarui dokumen; yaitu menghapus elemen tertentu (sub-dokumen) dari reply susunan:

// 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


[ EDIT TAMBAHKAN ]

(2) Kueri agregasi untuk mendapatkan reply dokumen:

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

Ini mengembalikan:

{
        "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. Kueri waktu ISODate dalam perl

  2. perbarui array yang sangat bersarang mongodb

  3. mongoDB Ganti nama bidang yang disematkan

  4. Tidak dapat terhubung ke mongoDB lokal dari Java

  5. MongoDB dan kunci utama komposit