当前位置: 首页 > 知识库问答 >
问题:

将新字段添加到mongoDB嵌入文档

李昱
2023-03-14

我有一个类似这样的mongoDocument结构,注释字段作为嵌入文档。

我想添加 “newField” : “something” 到 嵌入的注释字段中 “cid” : “17426944” :

在java驱动程序中,我尝试了:

BasicDBObject query = new BasicDBObject();  // MongoDB query
BasicDBObject record = new BasicDBObject(); // MongoDB record
BasicDBObject dbObject = new BasicDBObject(); // fieldsToUpdate

query.put("comments.cid","17426944");
dbObject.put("comments.newField","something");
record.put("$set",dbObject );
mongoCtrl.updateCollection(query, record, false, true);  // mongoCtrl is my connection contrl

这里的问题是:

com.mongodb.MongoException: cannot use the part (comments of comments.newField) to traverse the element ({comments:[ ..........  ]})
    at com.mongodb.CommandResult.getException(CommandResult.java:100)
    at com.mongodb.CommandResult.throwOnError(CommandResult.java:134)
    at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:142)

示例文档:

{       
        "_id" : ObjectId("53abb8d17bfd6b92e2398d34"),
        "name" : "satish",
        "number": "1122112",
         "comments" : [
                {
                        "cid" : "17426944"                          
                },
                {
                        "cid" : "607395840"
                },
                {
                        "cid" : "393084416"
                }
        ]
}

我需要什么 :

{       
        "_id" : ObjectId("53abb8d17bfd6b92e2398d34"),
        "name" : "satish",
        "number": "1122112",
         "comments" : [
                {
                        "cid" : "17426944",
                         "newField" : "something"       
                },
                {
                        "cid" : "607395840"
                },
                {
                        "cid" : "393084416"
                }
        ]
}

请帮帮我,谢谢vijay

共有1个答案

公孙茂学
2023-03-14

非常接近,您只是错过了位置 $ 运算符来匹配在查询部分中找到的数组的位置:

BasicDBObject query = new BasicDBObject();  // MongoDB query
BasicDBObject record = new BasicDBObject(); // MongoDB record
BasicDBObject dbObject = new BasicDBObject(); // fieldsToUpdate

query.put("comments.cid","17426944");
dbObject.put("comments.$.newField","something");
record.put("$set",dbObject );
mongoCtrl.updateCollection(query, record, false, true); 
 类似资料:
  • 我不得不向现有文档添加一个新字段/s。 下面是用于测试目的的过程AddNewField。 我做错了什么? 在调用fmongo.update后,我的收藏现在有两个文档!

  • 我想计算两个字段的总和,然后在文档中创建新的字段,比如:“total sum”。但我不知道怎么做。都在MongoDB中。这里有一个例子:

  • 我使用iText将数据填充到PDF中现有的AcroForm字段中。 我现在正在寻找将新的AcroForm字段添加到PDF的解决方案。iText是否可以做到这一点?如果是,我该如何做到这一点?

  • 问题内容: 我有这样的ES文档。 现在我想在此文档中添加一个新的“注释”,最后该文档将是 我不想在每次追加过程中都提供现有的“ comments”对象,因此最好是每次向此嵌套字段添加新对象的最佳方法。 我的解决方案: 问题答案: 检查脚本本身中的空字段。如果该字段不存在,则首先创建

  • 本文向大家介绍silverstripe 将字段添加到DataObject,包括了silverstripe 将字段添加到DataObject的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用该DataExtension机制将额外的数据库字段添加到现有的DataObject中: 并应用扩展名: 这将HairColour作为字段添加到Member对象。

  • 我一直在寻找方法,让jQuery使用html5验证自动写入我所有的输入字段,但我很难告诉它在哪里写入它。 我想要这个 并在结束标记前自动添加所需 我想我可以做一些类似的事情 但它不起作用。任何帮助都非常感谢。