Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从数组字段中删除与列表中的项匹配的项_Python_Mongodb_Mongodb Query_Pymongo_Aws Documentdb - Fatal编程技术网

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