mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 19:32:17 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
db.friend_version.updateMany(
 | 
						|
    {
 | 
						|
        "d_id": "100"
 | 
						|
    },
 | 
						|
    [
 | 
						|
        {
 | 
						|
            $addFields: {
 | 
						|
                elem_index: {
 | 
						|
                    $indexOfArray: [
 | 
						|
                        "$logs.e_id",
 | 
						|
                        "1000"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            }
 | 
						|
        },
 | 
						|
        {
 | 
						|
            $set: {
 | 
						|
                version: {
 | 
						|
                    $add: ["$version", 1]
 | 
						|
                },
 | 
						|
                last_update: new Date(),
 | 
						|
 | 
						|
            }
 | 
						|
        },
 | 
						|
        {
 | 
						|
            $set: {
 | 
						|
                logs: {
 | 
						|
                    $cond: {
 | 
						|
                        if: {
 | 
						|
                            $lt: ["$elem_index", 0]
 | 
						|
                        },
 | 
						|
                        then: {
 | 
						|
                            $concatArrays: [
 | 
						|
                                "$logs",
 | 
						|
                                [
 | 
						|
                                    {
 | 
						|
                                        e_id: "1000",
 | 
						|
                                        last_update: new Date(),
 | 
						|
                                        version: "$version",
 | 
						|
                                        deleted: false
 | 
						|
                                    }
 | 
						|
                                ]
 | 
						|
                            ]
 | 
						|
                        },
 | 
						|
                        else: {
 | 
						|
                            $map: {
 | 
						|
                                input: {
 | 
						|
                                    $range: [0, {
 | 
						|
                                        $size: "$logs"
 | 
						|
                                    }]
 | 
						|
                                },
 | 
						|
                                as: "i",
 | 
						|
                                in: {
 | 
						|
                                    $cond: {
 | 
						|
                                        if: {
 | 
						|
                                            $eq: ["$$i", "$elem_index"]
 | 
						|
                                        },
 | 
						|
                                        then: {
 | 
						|
                                            e_id: "1000",
 | 
						|
                                            last_update: new Date(),
 | 
						|
                                            version: "$version",
 | 
						|
                                            deleted: false
 | 
						|
                                        },
 | 
						|
                                        else: {
 | 
						|
                                            $arrayElemAt: ["$logs", "$$i"]
 | 
						|
                                        }
 | 
						|
                                    },
 | 
						|
 | 
						|
                                },
 | 
						|
 | 
						|
                            },
 | 
						|
 | 
						|
                        },
 | 
						|
 | 
						|
                    },
 | 
						|
 | 
						|
                },
 | 
						|
 | 
						|
            },
 | 
						|
 | 
						|
        },
 | 
						|
        {
 | 
						|
            $unset: ["elem_index"]
 | 
						|
        },
 | 
						|
    ]
 | 
						|
)
 |