Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在mongoose查询中删除数组中的对象_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 如何在mongoose查询中删除数组中的对象

Node.js 如何在mongoose查询中删除数组中的对象,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我是mongo db的新手,我想从列表中删除一项,我尝试了几种方法,但都不起作用 { name: 'ABCDE', snapshotString: [ '{"timestamp":1589316266621,"testObject":{}, "moreAttributes" : "XXXXX"}', '{"timestamp":1589316279337,"testObject":{}, "moreAttributes" : "XXXXX"}' ], snap

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

{

name: 'ABCDE',

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

我想删除给定时间戳的
快照字符串
,我这样做了:

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

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

谢谢

您可以尝试以下方法:

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

注意:我在这里假设,
时间戳
是一个字符串,如果不是,那么您应该将其转换为字符串,因为
$regex
操作符只接受字符串。

这是否回答了您的问题?在该示例中,
snapshotString
包含字符串数组,而不是对象数组。字符串没有字段,因此无法查询
快照字符串。时间戳
-它将永远不会匹配任何内容。您可以为该匹配尝试正则表达式。@很遗憾,不能。