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

Không thể kéo từ mảng lồng nhau và truy vấn trả về tài liệu con bằng MongoTemplate

(1) Cập nhật (kéo) reply phần tử mảng:

Mã này sẽ cập nhật tài liệu; nghĩa là xóa phần tử cụ thể (tài liệu con) khỏi reply mảng:

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


[CHỈNH SỬA THÊM]

(2) Truy vấn tổng hợp để nhận reply tài liệu:

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

Điều này trả về:

{
        "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. Cách đưa nhiều hàng vào danh sách được phân tách bằng dấu phẩy trong SQL

  2. Phương thức thể hiện Mongoose `this` không tham chiếu đến mô hình

  3. Lỗi Tornado:[Errno 24] Lỗi quá nhiều tệp đang mở

  4. Tổng số kết quả trả về trong MongoDB là 0 nếu không có kết quả

  5. Làm cách nào để truy vấn MongoDB trực tiếp từ Ruby thay vì sử dụng Mongoid?