MongoEngine - 通过 id 从 ListField 中提取引用

2024-03-15

我想删除一些引用ListField(ReferenceField),仅基于其价值。

我将有关图像的信息存储在以下模型中:

class ImageUrl(Document):
    src = UrlField()
    counter = IntField()
    deleted = BooleanField()

我们存储id页面上遇到的图像的数量EmbeddedDocument called Webpage:

class Webpage(EmbeddedDocument):
    image_list = ListField(ReferenceField(ImageUrl))
    ...

最后,Website模型被嵌入到RawData model:

class RawData(Document):
    ...
    webpage = EmbeddedDocumentField(Webpage)

我想删除对以下内容的引用ImageUrl记录来自RawData记录,根据它们的一些属性(例如:计数器值超过1),然后设置deleted这些的属性ImageUrl记录到True.

我正在做:

images = ImageUrl.objects((Q(deleted=False) & Q(counter__gt=1)).all()
for image in images:
    # all RadData records containing the image in their image list
    for rdata in RawData.objects(webpage__image_list__in=[image.id]:
        # remove image from the image_list
        RawData.objects(id=rdata.id).update_one(pull__webpage__image_list=image.id)
    # set 'deleted=True' on the ImageUrl record
    ImageUrl.objects(id=image.id).update_one(set__deleted=True)

The pull操作会引发以下错误:OperationError: Update failed [Cannot apply $pull/$pullAll modifier to non-array].

据我了解http://docs.mongodb.org/manual/reference/operator/pull/#_S_pull http://docs.mongodb.org/manual/reference/operator/pull/#_S_pull or 如何在 MongoEngine 中通过 id 从列表(ListField)中删除项目? https://stackoverflow.com/questions/7846109/how-to-remove-a-item-from-a-listlistfield-by-id-in-mongoengine?rq=1,我需要指定要从中删除值的数组的键。但是,就我而言,我想从列表中删除一个值...我应该怎么做?

非常感谢您的宝贵时间!


位置运算符的工作方式是它允许您查询列表中的值,然后对该值的第一个实例执行操作(通常是更新)。$pull将从列表中删除所有实例,这就是您想要的。

在带有引用的 mongoengine 中,您可以只传递实例对象,例如:

for rdata in RawData.objects(webpage__image_list=image):
    # remove image from the image_list
    rdata.update_one(pull__webpage__image_list=image)

我清理了代码,删除了重复的查询 - 正如您已经拥有的那样rdata无需重新查找该文档!

OperationError: Update failed [Cannot apply $pull/$pullAll modifier to non-array]这意味着您正在尝试提取需要数组的数据,并且有一个文档,其中image_list实际上不是一个数组。这可能是因为磁盘上有一个文档,其中image_list实际上不是一个列表。如果您放置了 try except 块,您可以查看失败的文档,看看是否是这种情况,如果是,则需要手动迁移。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoEngine - 通过 id 从 ListField 中提取引用 的相关文章

  • 从 SHAP 值中获取特征重要性

    我想要获得重要功能的数据框 通过下面的代码 我得到了 shap values 但我不确定这些值的含义是什么 在我的 df 中有 142 个特征和 67 个实验 但得到了一个带有 ca 的数组 2500 个值 explainer shap T
  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Python 是解释型的还是编译型的,或者两者兼而有之?

    据我了解 An 解释的语言是由解释器 将高级语言转换为机器代码然后执行的程序 实时运行和执行的高级语言 它一次处理一点程序 A compiled语言是一种高级语言 其代码首先由编译器 将高级语言转换为机器代码的程序 转换为机器代码 然后由执
  • ImportError:运行 jupyter Notebook 时没有名为 IPython.paths 的模块?

    我通过以下方式安装了 jupyter usr local opt python bin python2 7 m pip install jupyter 这将安装 ipython 版本 4 1 2 但是 当我运行 jupyter Notebo
  • 将二维数组放入 Pandas 系列中

    我有一个 2D Numpy 数组 我想将其放入 pandas 系列 而不是 DataFrame 中 gt gt gt import pandas as pd gt gt gt import numpy as np gt gt gt a np
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • 编辑 Jupyter Notebook 时 VS Code 中缺少“在选择中查找”

    使用 Jupyter Notebook 时 VSCode 中缺少 在选择中查找 按钮 它会减慢开发速度 所以我想请问有人知道如何激活它吗 第一张图显示了在 python 文件中的搜索 替换 第二张图显示了笔记本电脑中缺少的按钮 Python
  • 使用 Python 计算 Spark 中成对 (K,V) RDD 中每个 KEY 的平均值

    我想与 Python 共享这个特定的 Apache Spark 解决方案 因为它的文档非常贫乏 我想通过 KEY 计算 K V 对 存储在 Pairwise RDD 中 的平均值 示例数据如下所示 gt gt gt rdd1 take 10
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • Python:我不明白 sum() 的完整用法

    当然 我明白你使用 sum 与几个数字 然后它总结所有 但我正在查看它的文档 我发现了这一点 sum iterable start 第二个参数 start 的作用是什么 这太尴尬了 但我似乎无法通过谷歌找到任何示例 并且对于尝试学习该语言的
  • 使用 Conda 更新特定模块会删除大量软件包

    我最近开始使用 Anaconda Python 发行版 因为它提供了许多开箱即用的数据分析库 使用 conda 创建环境和安装软件包也轻而易举 但是当我想更新 Python 本身或任何其他模块时 我遇到了一些严重的问题 我事先被告知我的很多
  • Python对象初始化性能

    我只是做了一些快速的性能测试 我注意到一般情况下初始化列表比显式初始化列表慢大约四到六倍 这些可能是错误的术语 我不确定这里的行话 例如 gt gt gt import timeit gt gt gt print timeit timeit
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 通过 Web 界面执行 python 单元测试

    是否可以通过 Web 界面执行单元测试 如果可以 如何执行 EDIT 现在我想要结果 对于测试 我希望它们是自动化的 可能每次我对代码进行更改时 抱歉我忘了说得更清楚 EDIT 这个答案此时已经过时了 Use Jenkins https j

随机推荐

  • #if canImport(CoreImage) 在 swift 包管理器中不起作用

    我制作使用 CoreImage 的库 库支持 Cocoapods Carthage 和 Swift 包管理器 当我在 Swift 包管理器中构建它时 我收到此错误 Undefined symbols for architecture x86
  • 空 ByteArrayOutputStream / ZipOutputStream 的长度 = 22?

    我有一个关于流大小的小问题 这是我的尝试 ByteArrayOutputStream outStream new ByteArrayOutputStream ZipOutputStream zipStream new ZipOutputSt
  • 从 SQL Server 导出到带有列标题的 Excel?

    我有一个大约有 20 列的查询 我想将其导出到带有列标题的 Excel 文件 我以为这很容易弄清楚 但运气不好 我在网上搜索并发现了一项建议 但最终没有奏效 所以我陷入了困境 工具 gt 选项 选择 查询结果 gt SQL Server g
  • Angular 2.0 和 ng 风格

    我正在构建一个 Angular 2 0 组件 我想动态控制它的样式 使用ng style 快速查看 Angular 2 的文档后 我尝试了以下操作 div class theme preview fontSize div 并看到尺寸实际上打
  • WPF 切角元素

    我正在尝试在 WPF 中创建类似于下图的内容 该控件被设计为我的应用程序中所有内容的基本视图 并将位于带有背景 可能是某种渐变 的 Window 控件内 要求如下 三边圆角 左上 左下 右下 剪掉右上角的选项卡查看角 剪切区域 后面的背景透
  • 将可变上下文传递到回调中

    我正在尝试用 Rust 构建一个简单的 UI 但部分可以在 Lua 中编写脚本 使用 rust lua53 并且在找到一种让 Lua 组件访问 Lua 状态的好方法时遇到问题 这个问题 示例比我想要的要长一点 抱歉 UI 的核心是Widge
  • Direct2D 仅在 C++ Builder 中部分链接

    我有一个 C Builder Rad Studio Berlin 项目设置来使用 Direct2d 画布绘图与 TDirect2DCanvas 配合得很好 这表明 Direct2D 链接正确 一切都渲染得很顺利 但是 我需要使用矩阵 当我尝
  • gitlab-ctl 重新配置:无法确定节点名称

    我确实在 Ubuntu 16 04 4 LTS 上设置了一个新的 GitLab 实例 安装包进展顺利 GitLab 似乎已启动并运行 然后我开始配置实例并设置 SMTP etc gitlab gitlab rb 后来我跑了sudo gitl
  • 从多个 jpg 图像创建 Dicom

    我已经成功地用一张图像构建了 dicom 但我找不到添加更多图像的方法 我认为问题可能出在我的像素阵列中 任何人都可以帮我纠正它吗 Populate required values for file meta information met
  • 如何动态设置谷歌地图自定义缩放级别?

    我正在使用谷歌地图 根据要求 我需要设置取决于我的搜索查询的不同缩放级别 如果国家 地区地图上有多个位置 则地图应聚焦该国家 地区 其他情况是 如果城市中标记了不同的位置 则地图应集中到城市级别 var geoCoder new GClie
  • “#!/bin/env”是什么意思(位于 node.js 脚本的顶部)?

    我发现一些 Node js 项目的顶部有这个app js 如在这个开放轮班计划 https github com openshift openshift mongo node express example blob master serv
  • WinDBG - 查找实际的(非托管)异常

    我试图在托管 非托管混合代码中找到实际的异常 问题是我有一个 Net 类 它捕获所有未处理的异常 然后创建一个转储 因此当我查看转储时 存在混合的托管 非托管代码 并且我无法真正获取实际的非托管异常 更糟糕的是 Net 似乎有自己的例外 所
  • 如何在 ACSL 中编写“is power of 2”谓词?

    我尝试编写一个 ACSL 谓词来查看整数是否是 2 的幂 如下所示 predicate positive power of 2 integer i i gt 0 i 1 i 1 0 positive power of 2 i gt gt 1
  • OpenFileIDialog C# 中的 URL 作为文件名

    在我的 C win 表单中 我使用OpenFileDialog供用户选择要保存的文件 当用户指定一个 url 文件时 例如http www xyz com qdms MyFile PDFOpenFileDialog 下载文件并给出下载的文件
  • OPENCV 链接错误 - Win32 和 VS2012

    我已经构建了 openCV 3 0 0 alpha 和 beta 版本 但每次我运行我的项目时 我都会收到此错误 仅适用于 imread 功能 error LNK2019 unresolved external symbol class c
  • 如何设置Redis最大内存?

    我发现配置在this http redis io topics config 它只是说使用指定配置的命令 redis server
  • 如何从受密码保护的站点更新 Eclipse 插件?

    我在 这个网站 http javaforge com project HGE http javaforge com project HGE 我需要 注册 才能下载 Mercurial 的 Eclipse 插件 我注册了 但似乎什么也没发生
  • Wix:如何警告用户而不是使用属性终止安装?

    我正在 x64 计算机上搜索 Microsoft Access 数据库引擎的注册表项 这是我的代码
  • 将请求的文件从 API 传输到 API:NestJS(HttpService: Axios) 到 Python(flask)

    我正在尝试将文件从 NestJS API 传输到 Python Flask API 此过程将由 Nest API 上的 POST 请求 FormData 文件 触发 然后 Nest api 应该将文件发送到 Python api NestJ
  • MongoEngine - 通过 id 从 ListField 中提取引用

    我想删除一些引用ListField ReferenceField 仅基于其价值 我将有关图像的信息存储在以下模型中 class ImageUrl Document src UrlField counter IntField deleted