2

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

{
    "trigram": "#ha",
    "words": ["hahaha", "harley", "mahalo"]
}

问题是将新术语推送到数组中。我不知道如何使用$addToSet这个。

db["Terms"].update({
  "trigram": trigram,
  {"$addToSet": {"words":word}
})

它应该附加word到该words字段。但是数据库仍然是空的,没有返回任何错误消息。

我应该怎么办?

4

2 回答 2

11

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

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

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

于 2013-09-23T01:01:00.410 回答
1

尝试这个db["Terms"].update({ "trigram": "#ha"}, {"$addToSet": {"words":"word"} })

记住你需要更新,所以需要单独查找 { "trigram": "#ha"}更新 {"$addToSet": {"words":"word"} } 和添加单词" "

于 2013-09-27T13:07:41.183 回答