猫鼬从数组中删除一个元素

时间:2020-01-20 23:23:01

标签: mongodb mongoose

这是我的spa模式。

const spaSchema = new Schema({
  name: String,
  contactNumbers: String,
  address: String,
  images: [String],
});

我想删除图像数组中的元素名称为'abc.jpg'且文档ID为x的元素。我该如何实现?

2 个答案:

答案 0 :(得分:2)

我不太确定您的问题,因此我将介绍2个选项。在这两种情况下,我都假定您正在对library(dygraphs) library(xts) my_js <- 'function(d) { var d = new Date(d.getTime() + 7200*1000); var weekday = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var result = "" result += weekday[d.getDay()] + " " + d.getDate() result += " " + months[d.getMonth()] + " " + d.getFullYear(); return result; }' set.seed(69) dg <- dygraph(xts(rnorm(100), Sys.time() + seq(100)*10000), main = 'random_graph') dyAxis(dg, name = "x", axisLabelFormatter = my_js) 集合进行更新。

1)从文档中删除spa字段

要从所需文档中完全删除字段images,可以使用MongoDB $unset operator,如下所示:

原始文件:

images

更新方法:

{
  _id : ObjectId('some_id'),
  name : 'abc.jpg',
  contactNumbers: '...',
  address: '...',
  images: ['...']
}

这将导致:

Spa.update(
 { name : 'abc.jpg', _id : ObjectId('some_id') },
 { $unset : { images : null } }
);

2)删除{ _id : ObjectId('some_id'), name : 'abc.jpg', contactNumbers: '...', address: '...' } 字段中的一个元素

如果您尝试从images数组中删除一个具有特定值的元素,则可以使用MongoDB $pull operator,例如:

原始文件:

images

更新方法:

{
  _id : ObjectId('some_id'),
  name : '...',
  contactNumbers: '...',
  address: '...',
  images: ['123.jpg','abc.jpg','def.jpg']
}

这将导致:

Spa.update(
 { _id : ObjectId('some_id') },
 { $pull : { images : 'abc.jpg' } }
);

我希望那是您想要的。 =]

答案 1 :(得分:1)

要从图像(存储图像名称的位置)中删除一个元素,应使用$ pull作为波纹管

Spa.update(
 { _id : mongoose.Types.ObjectId('some_id') },
 { $pull : { images : 'IMAGE_NAME_THAT_YOU_WANT_TO_REMOVE_FROM_ARRAY' } }
);