【发布时间】:2013-07-23 06:58:38
【问题描述】:
我正在使用 node 和 mongodb,但在从我的集合中的数组中删除子文档时遇到问题,我似乎无法弄清楚。
我的“cardHolders”集合中的示例文档看起来像(为简洁起见,去掉了其他字段):
{
"_id" : ObjectId("51ee899ec15d5aaff39d3352"),
"cards" : [
{
"rfid_id" : ObjectId("51ee899ec15d5aaff39d335a")
}
]
}
我试图做的是在卡片数组中找到所有具有 rfid_id 值的子文档的 cardHolder 文档。
我试过 mongo 命令:
db.cardholders.update({},
{$pull:{ "cards": {"rfid_id": ObjectId("51ee899ec15d5aaff39d335a")}}},
false, false)
虽然我没有收到任何语法错误,但我的收藏中的任何文档都不会受到影响 - 非常感谢您对此事的任何帮助!
使用完整的文档详细信息进行编辑:
{
"_id" : ObjectId("51ee899ec15d5aaff39d3353"),
"first" : "first",
"last" : "last",
"email" : "email",
"phone" : "555 555 5555",
"userRole" : "su",
"cards" : [
{
"rfid_id" : ObjectId("51ee899ec15d5aaff39d3359")
}
],
"zones" : [
{
"zone_id" : ObjectId("51ee899ec15d5aaff39d3357")
}
]
}
【问题讨论】:
-
您是否尝试过在 rfid_id 上使用 $elemMatch 来匹配特定元素?
-
我现在使用:db.cardholders.update({}, {$pull:{ "cards": {$elemMatch: {rfid_id: ObjectId("51ee899ec15d5aaff39d335a")}}}}, false , false) 结果相同(无)
-
您原来问题中的代码在我尝试时成功删除了cards数组元素。
-
很奇怪,它确实与该对象的剥离版本有关。我编辑了我的问题以包含我正在使用的完整文档,我认为剥离其他字段会简化问题 - 我想我错了
标签: mongodb