Node.js 如何在mongoose查询中删除数组中的对象
我是mongo db的新手,我想从列表中删除一项,我尝试了几种方法,但都不起作用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
{
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
包含字符串数组,而不是对象数组。字符串没有字段,因此无法查询快照字符串。时间戳
-它将永远不会匹配任何内容。您可以为该匹配尝试正则表达式。@很遗憾,不能。