首页 > 解决方案 > 如何在猫鼬查询中删除数组中的对象

问题描述

请我是 mongo db 的新手,我想从我的列表中删除一项,我尝试了几种方法,但它不起作用。

{

name: 'ABCDE',

snapshotString: [
        '{"timestamp":1589316266621,"testObject":{}, "moreAttributes" : "XXXXX"}',
        '{"timestamp":1589316279337,"testObject":{}, "moreAttributes" : "XXXXX"}'
],
snapshots: [
   1589316266621,
    1589316279337
]
}

我想删除snapshotString给定的时间戳,我这样做了:

this.testCase.updateOne(
                {name:room, "snapshotString.timestamp": timestamp}, 
                { $pull: { "snapshotString.timestamp": timestamp } }, { safe: true }, 
                function(err, obj) {
                    console.log(" ***** err ***** "+err);
        });

这是一种让一个查询在同一个查询中删除两个带有时间戳的文档的方法snapshotStringsnapshots

谢谢

标签: node.jsmongodbmongoose

解决方案


您可以尝试以下方法:

this.testCase.updateOne(
    {name: room},
    {$pull:
        {snapshotString:
            {$regex: timestamp}
        }
    });

注意:我在这里假设,timestamp是一个字符串,如果不是,那么你应该将它转换为字符串,因为$regex运算符将只接受字符串。


推荐阅读