如何将元素推送到MongoDB中的现有数组?

len*_*klb 2 python database mongodb pymongo

我生成trigram片段作为主键.该字段words是由trigram键表示的术语数组,例如:

{
    "trigram": "#ha",
    "words": ["hahaha", "harley", "mahalo"]
}
Run Code Online (Sandbox Code Playgroud)

问题是将新术语推向阵列.我不知道该怎么用$addToSet.

db["Terms"].update({
  "trigram": trigram,
  {"$addToSet": {"words":word}
})
Run Code Online (Sandbox Code Playgroud)

它应该附加word到该words领域.但是数据库保持为空而不返回任何错误消息.

我该怎么办?

Joh*_*yHK 11

除非您使用该upsert选项,update否则只会修改现有文档,而不会创建它们.试试这个:

db["Terms"].update(
  { "trigram":trigram }, 
  { "$addToSet":{"words":word} }, 
  upsert=True)
Run Code Online (Sandbox Code Playgroud)

通过使用该upsert选项,它将在缺少时创建文档,否则只需更新现有文档.