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

MongoDB:tìm và tìm thấy với tính năng lọc mảng lồng nhau

Tôi sẽ TL; DR vì điều này hóa ra là một chuyến đi địa ngục. Tôi đã thử $elemMatch , Tôi đã thử $redact (cũng với $$ CURRENT và $$ ROOT), tôi đã thử $map , Tôi đã thử khung tổng hợp, tôi đã thử $project .

Bạn có thể đọc tất cả về nó tại đây:https://www.devsbedevin.net/mongodb-find-findone-with-nested-array-filtering-finally/

TL; DR

Giải pháp dường như là sử dụng khung tổng hợp để lọc mảng và ghi đè thuộc tính nhận xét với kết quả. Điều này đơn giản hơn âm thanh:

db.getCollection('posts').aggregate(
    {$match: {"author.id": authorId}},
    {$addFields : {"comments":{$filter:{ // We override the existing field!
        input: "$comments",
        as: "comment",
        cond: {$eq: ["$$comment.state.deleted", false]}
    }}}}
);

Kết quả:

{
  "author": {},
  "message": "This is post1",
  "comments": [
    {
      "message": "Im number 1!!!",
      "state": {
        "deleted": false
      }
    },
    {
      "message": "tHIS IS GREAT!",
      "state": {
        "deleted": false
      }
    },
    {
      "message": "I can type better than you guys",
      "state": {
        "deleted": false
      }
    }
  ]
},
{
  "author": {},
  "message": "This is post 2",
  "comments": [
    {
      "message": "I wanna have your children",
      "state": {
        "deleted": false
      }
    }
  ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $ nin với $ expr

  2. C # MongoDB.Driver GetServer là Gone, What Now?

  3. Cách đếm số lượng tài liệu trong bộ sưu tập mongodb

  4. node.js &express - mô-đun toàn cầu và các phương pháp hay nhất cho cấu trúc ứng dụng

  5. Truy vấn Mongodb với các trường trong cùng một tài liệu