Mongodb:将字段添加到嵌入式文档中(无数组)

精神世界

我正在尝试通过单个字段更新mongodb json文档。我知道如果我的数据位于对象数组中会很容易,但是由于原因和不知情的早期设计选择,它只是对象内的对象。

我的收藏夹中的单个文档的结构:

{
  "_id": 123123,
  "drivers_teams": { 
    "drivers" : { 
       "4" : { <data> },
       "5" : { <data indeed> },
       ...
    },
    ...
  }
 } 

我想添加新对象,例如

const collection = db.get('collection');
let drivers = { };  
drivers['111'] = { <new data> };

collection.update({}, {$set: { drivers_teams: { drivers } }}, { upsert: true }, function (err, doc) { ... });

但是结果是,“ drivers_teams”中的原始对象被清除,并且其中只有新字段。

如果我尝试:

collection.update({}, {$set: {  drivers }}, { upsert: true }, function (err, doc) { ... });

毫无疑问,它在drivers_teams之外插入了一个新字段“ drivers”

{
  "_id": 123123,
  "drivers" : { <new data> },
  "drivers_teams": { <still original> }
 }

这里有类似的问题(+解决方案),但是json没有像我一样嵌套。https://groups.google.com/forum/#!topic/mongodb-user/ZxdsuIU94AY

有没有办法完成我想做的事情?或者,当我要更新单个字段时,我应该放弃并覆盖整个文档吗?

编辑

可行的解决方案是这里,{$set: { 'drivers_teams.drivers.111': <data> }}但我应该提到的是示例密钥“ 111”实际上是未知的,它来自客户端发送更新数据时。这就是为什么此解决方案创建了新对象的原因:动态命名mongo key field

写任何东西都会{ 'drivers_teams.driver.' + key: <data> }引发错误。

萨比

在'$ set'文档中给出了用于指定嵌入式文档或数组中的字段的方法,您可以使用点表示法。对于您的情况,您可以执行以下操作:

collection.update({}, 
   {
      $set: { "drivers_teams.drivers.111": { <new data> }}
   }, 
   { upsert: true }, function (err, doc) { ... });

https://docs.mongodb.com/manual/reference/operator/update/set/

编辑:如果正在动态生成字段名称,则可以执行以下操作:

const collection = db.get('collection');
let set_obj= { };  
set_obj['drivers_teams.driver.' + key] =  { <new data> };

collection.update({}, {$set: set_obj }})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果任何其他数组嵌入式文档中没有相同的字段值,则将新文档添加到数组中

来自分类Dev

将嵌入式文档插入到mongodb文档中的新字段

来自分类Dev

将CSS添加到嵌入式Yammer

来自分类Dev

将字典添加到嵌入式字典

来自分类Dev

MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

来自分类Dev

PHP 如何将整个数组添加到 MongoDB 文档字段中

来自分类Dev

MongoDB $ n在嵌入式文档的某些字段中

来自分类Dev

查询mongodb中的嵌入式文档数组

来自分类Dev

嵌入式文档数组中的MongoDB Aggregate ObjectId

来自分类Dev

如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

来自分类Dev

如何在嵌入式数组mongodb中查询嵌入式文档

来自分类Dev

在Grails 3中将JNDI添加到嵌入式Tomcat服务器

来自分类Dev

如何将IBOutlet添加到嵌入式TableView中的类

来自分类Dev

如何将下拉菜单添加到嵌入式SwiftUI NavigationBarTitle中?

来自分类Dev

将数据添加到与PostingFormats相关的Java嵌入式Elasticsearch中的索引时出错

来自分类Dev

将 SharePoint 页面添加到 TFS 中的“嵌入式网页”小部件时出错

来自分类Dev

php:将mongodb嵌入式文档查询到数组中

来自分类Dev

在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

来自分类Dev

条件搜索后将文档添加到嵌入数组

来自分类Dev

查询MongoDB中的嵌入式文档

来自分类Dev

在mongodb中展开嵌入式文档

来自分类Dev

MongoDB聚合:通过动态字段路径从嵌入式文档添加字段

来自分类Dev

在节点中创建猫鼬模型的新实例-将第一项添加到一个嵌入式数组中

来自分类Dev

如何在InDesign中以编程方式将嵌入式图形添加到表格单元中

来自分类Dev

mongodb mongoose-如果字段不存在,如何将文档添加到数组

来自分类Dev

如何将现有的子文档推送到MongoDB中的嵌入式数组中?

来自分类Dev

Internet Explorer 9中的类型不匹配错误:将<title>添加到嵌入式SVG

来自分类Dev

通过WebExtension将事件监听器添加到所有嵌入式YouTube视频中

来自分类Dev

mongoDB:如何获取嵌入式文档的最新字段(非数组)

Related 相关文章

  1. 1

    如果任何其他数组嵌入式文档中没有相同的字段值,则将新文档添加到数组中

  2. 2

    将嵌入式文档插入到mongodb文档中的新字段

  3. 3

    将CSS添加到嵌入式Yammer

  4. 4

    将字典添加到嵌入式字典

  5. 5

    MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

  6. 6

    PHP 如何将整个数组添加到 MongoDB 文档字段中

  7. 7

    MongoDB $ n在嵌入式文档的某些字段中

  8. 8

    查询mongodb中的嵌入式文档数组

  9. 9

    嵌入式文档数组中的MongoDB Aggregate ObjectId

  10. 10

    如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

  11. 11

    如何在嵌入式数组mongodb中查询嵌入式文档

  12. 12

    在Grails 3中将JNDI添加到嵌入式Tomcat服务器

  13. 13

    如何将IBOutlet添加到嵌入式TableView中的类

  14. 14

    如何将下拉菜单添加到嵌入式SwiftUI NavigationBarTitle中?

  15. 15

    将数据添加到与PostingFormats相关的Java嵌入式Elasticsearch中的索引时出错

  16. 16

    将 SharePoint 页面添加到 TFS 中的“嵌入式网页”小部件时出错

  17. 17

    php:将mongodb嵌入式文档查询到数组中

  18. 18

    在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

  19. 19

    条件搜索后将文档添加到嵌入数组

  20. 20

    查询MongoDB中的嵌入式文档

  21. 21

    在mongodb中展开嵌入式文档

  22. 22

    MongoDB聚合:通过动态字段路径从嵌入式文档添加字段

  23. 23

    在节点中创建猫鼬模型的新实例-将第一项添加到一个嵌入式数组中

  24. 24

    如何在InDesign中以编程方式将嵌入式图形添加到表格单元中

  25. 25

    mongodb mongoose-如果字段不存在,如何将文档添加到数组

  26. 26

    如何将现有的子文档推送到MongoDB中的嵌入式数组中?

  27. 27

    Internet Explorer 9中的类型不匹配错误:将<title>添加到嵌入式SVG

  28. 28

    通过WebExtension将事件监听器添加到所有嵌入式YouTube视频中

  29. 29

    mongoDB:如何获取嵌入式文档的最新字段(非数组)

热门标签

归档