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

MongoEngine:向动态文档添加字段

后阳炎
2023-03-14

我希望将动态字段存储到文档中,但每个文档可以有不同的字段。

例如:

Class SampleDoc(DynamicDocument):
   xyz = StringField()

df = "field1"
a = SampleDoc()
a.df = "testing"
a.save()

如果我运行上述程序,mongodb文档如下所示。

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "df" : "testing" }

但我想要的是字段名称应该是“field1”而不是这样的“df”。

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "field1" : "testing" }

这只是一个示例代码,所以我知道df值是什么,但实际上我不知道df值是什么。那么在存储时动态命名字段的方法是什么?

在Mongoengine中有一个类似的使用key作为值的问题,但是解决方案建议使用DictField(),但是我不想用。

共有2个答案

姜烨伟
2023-03-14

在mongoDB shell中,这对我有用:

df = "field1"
a = {}
a[df.toString()] = "testing" //use [] and toString here
db.test.save(a)

db.test.find(a)
{ "_id" : ObjectId("539062f5944a6efde79f7c1d"), "field1" : "testing" }
穆歌者
2023-03-14

看了源代码BaseDocument.py找到了解决办法。

df = "field1"
a = SampleDoc()
a.__setattr__(df,"testing")
a.save()
 类似资料:
  • 我不得不向现有文档添加一个新字段/s。 下面是用于测试目的的过程AddNewField。 我做错了什么? 在调用fmongo.update后,我的收藏现在有两个文档!

  • 在VAADIN组件中,用户可以选择插入一到N个问题答案。 初始:第一个答案应有一个文本字段,带有按钮(“添加另一个答案”) 按下按钮时,应为第二个答案添加一个新的文本字段,以此类推。。。 我的问题是,如何在按钮按下时实现新文本字段的动态加载? 我添加了一张我如何想象这个问题的图片。

  • 每次单击按钮add时,我都会调用一个方法。在这个方法中,我为我的集合创建了一个新文档,其中包含一个标题和一个字符串数组。通过从我保存的服务调用方法,可以在我的方法中创建此文档。单击“完成”按钮时,我想在文档中添加最后一个字符串值字段。如何获取当前保存id的快照以添加新元素?我正在使用Angular和firestore 这些按钮位于component.html OnSave和onComplete位于

  • 问题内容: 我有一个空的JTable,绝对没有。我需要以某种方式动态生成其表列。我尝试使用的代码的简化版本: 但是我得到了 线程“ AWT-EventQueue-0”中的异常java.lang.ArrayIndexOutOfBoundsException:0> = 0 我究竟做错了什么? 如果有帮助,这是完整的堆栈跟踪: 问题答案: 我认为您需要将列添加到表的数据模型及其列模型中。当数据模型更改时

  • 请帮帮我!!我到处找了很多,找到了任何有用的信息,或者我有,但我不能在这么短的时间内测试我在web上找到的所有东西,而且spring文档似乎只对普通情况和xml配置非常好,不适合我试图做的疯狂的事情,也不适合编程配置。

  • 有一种Spring方法可以用JSON视图从服务响应中过滤出字段,但我缺少一种等效的方法,可以用一些类似这样的动态/语法字段来丰富响应; 我可以在视图中包装用户,但我不想手动传播所有需要的用户字段。 我的另一个想法是用用户对象扩展视图,并创建某种引用链接器,将值引用从用户对象复制到视图中,但这将使集合变得复杂。 是否有其他方法或框架来实现这一目标?这一概念是否根本没有得到解决? 更新: 举例说明: