让我们说我有以下几点
Db.companies.insertOne({名称:“新鲜苹果公司”,isStartup: true,员工: 33,资金: 12345678901234567890,详细信息:{ceo:“马克”},标签:{标题:“超级”},{标题:“完美”},foundingDate:新日期(),insertedAt:新时间戳()})
现在我需要更新这个,并包含一个新的细节,这样我就有了详细信息:{ceo: "Mark", city: "New York"}
{
"_id" : ObjectId("5c71b362b3458dab6ca76419"),
"name" : "Fresh Apples Inc",
"isStartup" : true,
"employees" : 33,
"funding" : 12345678901234567000,
**"details" : {
"ceo" : "Mark",
"address" : "New York"
},**
"tags" : [
{
"title" : "super"
},
{
"title" : "perfect"
}
],
"foundingDate" : ISODate("2019-02-23T20:56:02.380Z"),
"insertedAt" : Timestamp(1550955362, 1)
}我如何才能在不失去“首席执行官”:“马克”的情况下更新这一信息?
发布于 2019-02-23 23:24:16
试一试
db.companies.update({"_id" : ObjectId("5c71b362b3458dab6ca76419")},{$set: {"details.city": "New York"}})发布于 2019-02-23 23:37:20
在这种情况下,您应该对db.collection.update()运算符使用update操作( db.collection.findOneAndUpdate()、db.collection.findOneAndUpdate()或等效操作)。
如果您想在update函数中更新嵌入文档中的字段您的update参数,应该如下所示:
{ $set: { "embededDocument.someField": "some value" } }在这种特殊情况下,可以使用以下命令:
db.companies.update({ name: "Fresh Apples Inc" }, { $set: { "details.address": "New York" } })请注意,您应该使用ObjectId,因为可能有多个名称相同的文档,但我认为这一点读起来更清楚。
https://stackoverflow.com/questions/54846648
复制相似问题