我正在使用node和mongodb,并且在从集合中的数组中删除一个子文档时遇到了一个问题,我似乎找不出这个问题。
我的“cardHolders”集合中的示例文档类似于(为了简洁起见去掉了其他字段):
{
"_id" : ObjectId("51ee899ec15d5aaff39d3352"),
"cards" : [
{
"rfid_id" : ObjectId("51ee899ec15d5aaff39d335a")
}
]
}我要做的是查找卡片数组中有一个带有rfid_id值的子文档的所有rfid_id文档。
我试过蒙戈命令:
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")
}
]
}发布于 2013-07-24 10:05:26
您的示例运行得很好:
db.so.drop();
db.so.insert(
{
"_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")
}
]
});
db.so.update({}, {$pull:{ "cards": {"rfid_id": ObjectId("51ee899ec15d5aaff39d3359")}}}, false, false)
db.so.find().pretty();产出:
{
"_id" : ObjectId("51ee899ec15d5aaff39d3353"),
"cards" : [ ],
"email" : "email",
"first" : "first",
"last" : "last",
"phone" : "555 555 5555",
"userRole" : "su",
"zones" : [
{
"zone_id" : ObjectId("51ee899ec15d5aaff39d3357")
}
]
}虽然我必须稍微修改一下ObjectID,因为它最初在文档的简单版本和完整版本之间使用了不同的字符串。
https://stackoverflow.com/questions/17823198
复制相似问题