Python 从数组字段中删除与列表中的项匹配的项
假设我有以下文档结构:Python 从数组字段中删除与列表中的项匹配的项,python,mongodb,mongodb-query,pymongo,aws-documentdb,Python,Mongodb,Mongodb Query,Pymongo,Aws Documentdb,假设我有以下文档结构: { "_id": <ObjectId goes here>, "postBody": "test", "photos": [ {"url": "url1.com", "status": 0}, {"url": "url2.com", "status": 0}, {"url": "url3.com", "status": 0}, {"url": "url
{
"_id": <ObjectId goes here>,
"postBody": "test",
"photos": [
{"url": "url1.com", "status": 0},
{"url": "url2.com", "status": 0},
{"url": "url3.com", "status": 0},
{"url": "url4.com", "status": 0}
]
}
在mongo查询中如何执行此操作
这是我到目前为止试过的
db.Post.update_one(
{"_id": <ObjectId goes here>},
{
"$pull": {
"photos": {
"url": {
"$in": toDelete
}
}
}
}
)
它应该能用,我已经测试过了,只是为了确保它能用<代码>这是类型
ObjectId()
还是字符串?只需执行.find()
即可检查过滤器是否工作,如果是字符串,请将其转换为ObjectId()
。@whoami我收到一个错误。我更新了我的帖子我试过了,我成功了!更新({“_id”:ObjectId(“5eb548d0d636f32d234ac2c0”),{“$pull”:{“照片”:{“url”:{“$in”:['url2.com']}}})是的,它甚至对我也有效。你能提供其余的相关代码吗?它应该能工作,我已经测试过了,只是为了确保它能工作<代码>这是类型ObjectId()
还是字符串?只需执行.find()
即可检查过滤器是否工作,如果是字符串,请将其转换为ObjectId()
。@whoami我收到一个错误。我更新了我的帖子我试过了,我成功了!更新({“_id”:ObjectId(“5eb548d0d636f32d234ac2c0”),{“$pull”:{“照片”:{“url”:{“$in”:['url2.com']}}})是的,它甚至对我也有效。你能提供其余的相关代码吗?
db.Post.update_one(
{"_id": <ObjectId goes here>},
{
"$pull": {
"photos": {
"url": {
"$in": toDelete
}
}
}
}
)
{
"_id": <ObjectId goes here>,
"postBody": "test",
"photos": [
{"url": "url1.com", "status": 0},
{"url": "url4.com", "status": 0}
]
}
Traceback (most recent call last):
File "/var/task/chalice/app.py", line 1104, in _get_view_function_response
response = view_function(**function_args)
File "/var/task/chalicelib/Post/controllers/post_controller.py", line 62, in edit_post
raise e
File "/var/task/chalicelib/Post/controllers/post_controller.py", line 59, in edit_post
result = POSTSERVICE.edit_post(post_data)
File "/var/task/chalicelib/Post/services/post_service.py", line 362, in edit_post
raise e
File "/var/task/chalicelib/Post/services/post_service.py", line 315, in edit_post
"$in": toDelete
File "/var/task/pymongo/collection.py", line 1003, in update_one
session=session),
File "/var/task/pymongo/collection.py", line 856, in _update_retryable
_update, session)
File "/var/task/pymongo/mongo_client.py", line 1492, in _retryable_write
return self._retry_with_session(retryable, func, s, None)
File "/var/task/pymongo/mongo_client.py", line 1385, in _retry_with_session
return func(session, sock_info, retryable)
File "/var/task/pymongo/collection.py", line 852, in _update
retryable_write=retryable_write)
File "/var/task/pymongo/collection.py", line 767, in _update
common.validate_boolean("upsert", upsert)
File "/var/task/pymongo/common.py", line 159, in validate_boolean
raise TypeError("%s must be True or False" % (option,))
TypeError: upsert must be True or False