python - pymongo - 将字典附加到列表中不起作用
问题描述
我有一个 mongoDB 列表issues
。该记录有一个children
属性,起初是一个空列表。下次出现具有相同标题的问题时,我想附加到已经创建的条目。
我正在尝试以下工作。但是当我尝试使用 $addToSet 时出现错误。
我得到的错误:
Updating the path 'children' would create a conflict at 'children'
这就是我目前正在尝试做的事情。
db.issues.update_one({'title': issue['title']},
{
"$setOnInsert": {"insertion_date": now, "children": []},
"$set": {"last_update_date": now},
"$addToSet": {"children": {'title': issue['title'], 'date': now} },
},
upsert=True)
第一次创建条目时,它应该如下所示
{
"_id" : ObjectId("5b588b305b2eec7d7029fb4a"),
"title" : "title_1",
"last_update_date": ISODate("2018-07-25T14:41:50.168Z"),
"children" : [],
}
下次出现具有相同标题的条目时,它应该只是附加到该记录的 children 键。由于时间戳,$addToSet 应该是唯一的,因此它不会是添加到该子列表中的相同条目
{
"_id" : ObjectId("5b588b305b2eec7d7029fb4a"),
"title" : "title_1",
"children" : [
{
"title": title_1,
"date": ISODate("2018-07-25T14:41:50.168Z")
}
],
}
更新
如果我这样做,它可以工作,但第一个条目也会将它添加到 children 键,而不是它是一个空列表。
db.issues.update_one({'title': issue['title']},
{
"$setOnInsert": {"insertion_date": now},
"$set": {"last_update_date": now},
"$addToSet": {"children": {'title': issue['title'], 'date': now}},
},
upsert=True)
给出以下结果:
{
"title" : title_1,
"children" : [
{
"title" : "title_1",
"date" : ISODate("2018-07-25T15:55:45.134Z")
}
],
}
解决方案
推荐阅读
- html - 每组前有额外行的角垫表
- tkinter - Tkinter - 键绑定无法正常工作
- android - BluetoothGattCharacteristic.value 返回设备名称
- javascript - 前一个完成后执行javascript函数
- sql-server - Entity Framework 6.2 数据库先预热
- ansible - 尝试根据 ansible_local 事实设置全局 Ansible 事实
- java - Jhipster 自定义弹性搜索映射
- node.js - 是否可以从我的 Lambda 函数中的 CloudWatch 事件日志中获取“实例名称”......?
- reactjs - 文件上传后如何清除 React Dropzone 组件中的 Dropzone?
- angular - 使用构造函数参数创建动态组件