- 36
- 0
MongoDB中,有如下的一条数据,我想修改,workerStats.stage=LABEL and workerStats.idOfWorker=admin的stats里面的labeledItems,使其自增1。
{
"_id" : ObjectId("5ac1ff4c87c0fc67c0f4fe60"),
"_class" : "com.JobEntity",
"workerStats" : [
{
"idOfWorker" : "admin",
"stage" : "LABEL",
"stats" : {
"totalItems" : 0,
"labeledItems" : 0,
"submittedItems" : 0
}
},
{
"idOfWorker" : "lgh",
"stage" : "REVIEW",
"stats" : {
"totalItems" : 0,
"labeledItems" : 0,
"submittedItems" : 0
}
}
]
}
我的修改语句如下:
db.job.updateOne(
{
"_id": ObjectId("5ac1ff4c87c0fc67c0f4fe60"),
"workerStats.stage": "LABEL",
"workerStats.idOfWorker": "admin"
},
{
$inc: {
"workerStats.$.stats.labeledItems": 1
}
}
)
但是并不起作用,请问应该如何修改?
- 共 0 条
- 全部回答
-
ジ世中沉沦〆 普通会员 1楼
在MongoDB中,嵌套文档(document nests)是MongoDB文档的一个特殊类型,它可以包含多个文档嵌套在一个单独的集合中。局部更新(局部更新)是指在当前文档中局部地更改一个或多个文档的值,而不是整个文档。以下是在MongoDB中局部更新的步骤:
- 定义嵌套文档:
在MongoDB中,每个文档都包含一个名为
_id的字段,这是文档的唯一标识符。以下是一个简单的嵌套文档示例:
json { "_id": "1", "name": "Alice", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA" } }- 定义子文档:
为了更新嵌套文档中的某个值,你需要在子文档中包含与原始文档具有相同
_id字段的字段。例如,如果你想更新嵌套文档中的age字段,你可以创建一个子文档并设置它的age属性:
json { "_id": "1", "name": "Alice", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA" }, "children": [ { "_id": "100", "name": "Bob", "age": 15 }, { "_id": "101", "name": "Charlie", "age": 12 } ] }- 创建局部更新查询:
使用
updateOne或updateMany函数来局部更新文档。以下是一个使用updateOne函数的示例:
```javascript var updatedDocument = db.collection.updateOne( { _id: "1" }, { $set: { "address.street": "Updated Street", "address.city": "Updated City", "address.state": "Updated State" } } );
if (updatedDocument.insertedCount === 0) { db.collection.updateMany( { _id: "1" }, { $set: { "address.street": "Old Street", "address.city": "Old City", "address.state": "Old State" } } ); } ```
- 更新文档:
使用
insertOne函数将更新的文档插入到集合中,而不会影响到已存在的文档。例如,以下代码将更新嵌套文档中的address.street属性:
```javascript db.collection.updateOne( { _id: "1" }, { $set: { "address.street": "Updated Street" } } );
var updatedDocument = db.collection.updateOne( { _id: "1" }, { $set: { "address.street": "New Street" } } );
if (updatedDocument.insertedCount === 0) { db.collection.updateMany( { _id: "1" }, { $set: { "address.street": "Old Street", "address.city": "Old City", "address.state": "Old State" } } ); } ```
在这个例子中,
updatedDocument数组中的第一个元素包含嵌套文档中的address对象,其street属性被更新为 "Updated Street"。第二个元素包含嵌套文档中的第二个address对象,其street属性也被更新为 "New Street"。如果没有插入任何新的文档,则updatedDocument数组中的第二个元素也会被插入,因为嵌套文档中不存在其他文档的address对象。请注意,局部更新通常用于在特定部分更新文档,而不是在整个文档中更改所有值。如果在文档中频繁地更改子文档中的值,你可能需要使用其他方法,如批量插入或实时更新。
- 定义嵌套文档:
在MongoDB中,每个文档都包含一个名为
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
