0

我有表格的集合

{ 
   "student_id":"123",
   "test": [ { "date_created": "12/3/2013" } ]
}

我想取消设置日期字段。我使用以下查询:

db.student.update({ "student_id" : "1234"} { "$unset" : { "test.$.date_created" : ""}})

我也试过这个:

db.student.update({ "student_id" : "1234"} { "$unset" : { "test.date_created" : ""}})

但是,它不起作用。

4

1 回答 1

2

您应该再次查看有关使用位置运算符更新的文档。

从文档:

数组字段必须出现在查询参数中,以确定要更新的数组元素。

因此,我们可以通过执行以下操作来获得您想要发生的事情:

db.student.update({ student_id: 123, 'test.date_created': { $exists: true } }, { $unset: { 'test.$.date_created': "" } }

这将取消设置数组中第一个对象的字段date_created

如果您知道date_created要删除的数组中字段的位置:

db.student.update({ student_id: 123 }, { $unset: { 'test.0.date_created': "" } }

如果您知道要删除的日期:

db.student.update({ student_id: 123, 'test.date_created': "12/3/2013" }, { $unset: { 'test.$.date_created': "" } }

但是,由于您示例中的架构,这将在您的数组中留下一个空对象......

于 2013-08-19T06:40:46.677 回答