mongodb - Pymongo find() 与“$toString”投影运算符
问题描述
我想查询一个获取_id
字符串而不是 ObjectId 的 mongo 对象。
def get_obj():
query = {}
contents = {
'UniqueId' : True,
'Name' : True,
'Address1' : True,
'id' : {
"$toString": "$_id"
}
}
return db.get_db().collection.find(query,contents)
当我以这种方式运行它时,我得到以下输出:
pymongo.errors.OperationFailure: Unsupported projection option: id: { $toString: "$_id" }
解决方案
我相信您的问题是您正在使用aggregate
函数 ( $toString
) 而不进行聚合。
至少有2个选项:
- 只需使用python
str()
方法。
cursor = list(get_obj())
print([str(doc['_id']) for doc in cursor])
- 使用聚合
def get_obj():
contents = [
{'$project': {
'_id': {'$toString': '$_id'},
# other desired fields
}}
]
return db.get_db().collection.aggregate(contents)
result = list(get_obj())
print([doc for doc in result])
推荐阅读
- postgresql - INSERT 的分区表是否需要 autovacuum?
- python - 地点 关于 Pandas 多个条件
- python - 将多行合并为单行
- gitlab-ci - gitlab语法:这个配置中&default是什么意思
- c# - SAML2 SLO 与 OKTA 集成,命中格式错误的请求
- r - 在 r 中更新 mapboxer 代理
- javascript - 有没有办法在另一个文件中的组件树之外更改 redux 中的状态?
- arrays - 由用户输入设置的结构数组大小?
- treeview - 如何使节点图标树视图数据窗口更大
- pyspark - 如何在pyspark中为计数模型实现负二项式回归?