sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB fjerner elementer afhængigt af alle andre elementer (Iteration)

Så baseret på dit eksempel vil du udlæse ranktime medmindre det er SOURCE2 og den samme dato er allerede blevet tilføjet til outputtet (men kun for SOURCE2 ).

Du kan bruge $reduce som tidligere, men du skal scanne tidligere tilføjede elementer, som kan opnås ved hjælp af $ anyElementTrue operator, og da dit output indeholder det tredje element, antager jeg, at den gentagne dato kun er en stopbetingelse, hvis den samme dato er blevet tilføjet for SORUCE2$filter er også nødvendig for at forberede sættet af tidligere tilføjede SOURCE2 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
                        ]
                    }
                }
            }
        }
    }
])

Mongo Playground




  1. Mongoose Aggregate:begræns antallet af poster i $gruppe

  2. JavaScript tildeler ikke et element til objektet

  3. Er det normalt at have masser af forbindelser mellem node og mongo, når du bruger mongoose?

  4. MongoDB og upsert problem