当前位置: 首页 > 知识库问答 >
问题:

为什么猫鼬删除了我的部分查询

法子昂
2023-03-14

我有以下在mongoDB CLI中工作的查询:

db.organisations.updateOne({ _id: ObjectId("5f687da23a4dc9071baefd6d")}, {$pull: {courseIds: 
ObjectId("5f687b863a4dc9071baefd6c"), "groups.$[].courseIds": 
ObjectId("5f687b863a4dc9071baefd6c") }})

下面的问题,我认为是猫鼬的等价物:

await Organisation.updateOne({_id: "5f687da23a4dc9071baefd6d"},
{$pull: {courseIds: "5f687b863a4dc9071baefd6c", "groups.$[].courseIds": 
"5f687b863a4dc9071baefd6c"}})

使用mongoose调试,我可以看到mongoose转换为的以下查询正在删除数组中所有文档的整个pull操作的后半部分。为什么会这样?

organisations.updateOne({ _id: ObjectId("5f687da23a4dc9071baefd6d") }, { '$pull': { 
courseIds: ObjectId("5f687b863a4dc9071baefd6c") } }, {})

共有1个答案

孙星鹏
2023-03-14

原来我有大笨蛋。我的猫鼬模式是不正确的。

 类似资料:
  • 问题内容: 当用户向我的API注册时,他们将返回一个用户对象。在返回对象之前,我删除了散列的密码和salt属性。我必须用 因为当我尝试 对象属性仍然存在并返回。 这是为什么? 问题答案: 要使用它,您需要通过调用将模型文档转换为普通的JavaScript对象,以便您可以自由地操作它:

  • 问题内容: 我刚开始,最近经历了一个ODM框架。 在文档上,我找不到为什么需要使用。我可以给出的一个原因是,我们可以从定义应用程序架构。 我正在寻找更多可能的原因,以及吸引我使用的需求。 请列出所有可能的优点和使用理由/需要。 问题答案: 主要优势是相对于纯mongo的抽象。 来自SQL数据库类型的许多开发人员对于使用未定义结构的动态集合感到非常不舒服。因此, 模式 首先可以帮助您。 此外,它实现

  • 问题内容: 我想浏览Mongoose存储在Mongodb中的原始数据。去哪儿了?我有一个名为Profile的模式,其中存储了多个配置文件,但是使用Mongodb shell ,并且不返回任何内容。 架构 问题答案: 使用Mongoose时的默认集合名称是小写的复数模型名称。 因此,如果要为as 创建模型: 集合名称是; 因此您将在shell中找到其内容。 请注意,如果您不喜欢默认行为,则可以提供自

  • 问题内容: 我的意思不是删除一个或多个文件。我的意思是完全删除该模型,以便猫鼬不再意识到它。声明模型后,我不知道如何使猫鼬忘记该模型,以便可以重新创建它。 目前,上面引发了一个异常。 OverwriteModelError:编译后无法覆盖“ Book”模型。 我希望能够做这样的事情… …并且没有任何错误。有任何想法吗? 问题答案: 试试这个 然后重新注册/重新初始化它。它将正常工作

  • 为什么已经从PHP中删除了,还有其他原因吗?

  • 请检查这段代码,看看@Arun R在如何计算覆盖另一个矩形的矩形面积中所说的算法有什么问题 为什么它没有删除其他内部的矩形