python - 追加到数组pymongo
问题描述
我想bookmarks
通过 id 更新数组_id_collection
。
result = collections.find_one({"_id": ObjectId(id)},
{ 'array_of_collections': { '$elemMatch': { '_id_collection': ObjectId('5e9871582be940b6af4a9b41') }}})
print(result) # {'_id': ObjectId('5e986b4a07b94384ae8016b7'), 'array_of_collections': [{'_id_collection': ObjectId('5e9871582be940b6af4a9b41'), 'name_of_collection': 'test2', 'bookmarks': []}]}
这是我搜索此对象的结果代码,现在我可以在bookmarks
数组中附加一些值,但我不知道该怎么做。在这张照片上你可以看到我的 monbodb 结构。
解决方案
如果您将其$elemMatch
作为查询的一部分然后使用位置运算符$
,您可以成功地将值推送到所需的书签数组。
试试这个:
import pprint
from bson import ObjectId
from pymongo import MongoClient
client = MongoClient()
db = client.tst1
coll = db.coll6
coll.update_one({"_id": ObjectId("5e9898c69c26fe7ba93476f6"),
'array_of_collections': {'$elemMatch': {'_id_collection': ObjectId("5e9898c69c26fe7ba93476f4")}}},
{'$push': {'array_of_collections.$.bookmarks': 'Pushed Value 1'}})
mlist1 = list(coll.find())
for mdoc in mlist1:
pprint.pprint(mdoc)
结果文件:
{'_id': ObjectId('5e9898c69c26fe7ba93476f6'),
'array_of_collections': [{'_id_collection': ObjectId('5e9898c69c26fe7ba93476f2'),
'bookmarks': [],
'name_of_collection': 'test'},
{'_id_collection': ObjectId('5e9898c69c26fe7ba93476f3'),
'bookmarks': [],
'name_of_collection': 'test2'},
{'_id_collection': ObjectId('5e9898c69c26fe7ba93476f4'),
'bookmarks': ['Pushed Value 1'],
'name_of_collection': 'test3'},
{'_id_collection': ObjectId('5e9898c69c26fe7ba93476f5'),
'bookmarks': [],
'name_of_collection': 'test4'}]}
推荐阅读
- go - 内部切片操作会影响外部的原始切片吗?
- flutter - 使范围日期选择器颤动
- swiftui - 在 ZStack 中对齐蒙版矩形,同时更改蒙版区域 [SwiftUI]
- java - 如何处理多个jre和一个jar文件
- google-sheets - 基于第一列非零值的条件格式
- python - 什么是 Big-O 和精确运行时
- mysql - MySQL 中可以使用 Top 子句吗?
- python - 对 sklearn 的 roc_auc_score 方法的困惑
- java - %Like% 在 Spring JpaRepository 中查询 List 类型的属性
- python - 使用python为PDF的每一页循环一个脚本