为啥猫鼬会删除我的部分查询

Posted

技术标签:

【中文标题】为啥猫鼬会删除我的部分查询【英文标题】:Why is mongoose removing part of my query为什么猫鼬会删除我的部分查询 【发布时间】:2021-01-21 04:58:55 【问题描述】:

我有以下在 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 转换为的以下查询正在删除数组中所有文档的拉取操作的整个后半部分。这是为什么呢?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于为啥猫鼬会删除我的部分查询的主要内容,如果未能解决你的问题,请参考以下文章

从精益查询的结果创建猫鼬模型

为啥要避免动态 SQL 查询?有啥建议可以删除坏的部分并使用这些吗?

猫鼬按日期排序,多个查询

为啥我的网站的谷歌地图部分只有在用户删除他/她的 cookie 时才会更新?

带有部分字符串的猫鼬文本搜索

为啥我无法在猫鼬查询中获取字符串的值?