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

MongoDB loại bỏ các phần tử phụ thuộc vào tất cả các phần tử khác (Lặp lại)

Vì vậy, dựa trên ví dụ của bạn, bạn muốn xuất ranktime trừ khi nó là SOURCE2 cùng ngày đã được thêm vào đầu ra (nhưng chỉ cho SOURCE2 ).

Bạn có thể sử dụng $reduce như trước đây nhưng bạn cần phải quét các phần tử được thêm trước có thể đạt được bằng cách sử dụng $ anyElementTrue toán tử và vì đầu ra của bạn chứa phần tử thứ ba, tôi giả sử ngày lặp lại là điều kiện dừng chỉ khi cùng một ngày đã được thêm vào cho SORUCE2 vì vậy $ filter cũng cần thiết để chuẩn bị tập hợp SOURCE2 được thêm trước s:

db.col.updateMany({}, [
    {
        $set: {
            ranktime: {
                $reduce: {
                    input: "$ranktime",
                    initialValue: [],
                    in: {
                        $cond: [ 
                            { 
                                $and: [ 
                                    { "$eq": [ "$$this.source", "SOURCE2" ] },
                                    {
                                        $anyElementTrue: {
                                            $map: {
                                                input: { $filter: { input: "$$value", as: "prev", cond: { $eq: { "$$prev.source", "SOURCE2" } } } }, // already added SOURCE2 elements
                                                as: "addedElement",
                                                in: { "$eq": [ { $substr: [ "$$addedElement.datum", 0, 15 ] }, { $substr: [ "$$this.datum", 0, 15 ] } ] }
                                            }                        
                                        }
                                    }
                                ]
                            },
                            "$$value", // skip current element ($$this) 
                            { $concatArrays: [ "$$value", [ "$$this" ] ] } // add current element to the output
                        ]
                    }
                }
            }
        }
    }
])

Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lọc theo ngày bằng idObject

  2. Tại sao tôi gặp lỗi 500 Chúng tôi rất tiếc nhưng đã xảy ra sự cố khi đẩy ứng dụng của tôi lên Heroku?

  3. Sự khác biệt giữa phương thức insert (), insertOne () và insertMany () là gì?

  4. MongoDB:Chèn hàng loạt (Bulk.insert) so với chèn nhiều (chèn ([...]))

  5. $ push đã sử dụng quá nhiều bộ nhớ và không thể tràn ra đĩa. Giới hạn bộ nhớ:104857600 byte