首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongodDB中从数组中删除子文档

在MongodDB中从数组中删除子文档
EN

Stack Overflow用户
提问于 2013-07-24 00:20:49
回答 1查看 3.3K关注 0票数 1

我正在使用node和mongodb,并且在从集合中的数组中删除一个子文档时遇到了一个问题,我似乎找不出这个问题。

我的“cardHolders”集合中的示例文档类似于(为了简洁起见去掉了其他字段):

代码语言:javascript
复制
{
    "_id" : ObjectId("51ee899ec15d5aaff39d3352"),
    "cards" : [
            {
               "rfid_id" : ObjectId("51ee899ec15d5aaff39d335a")
            }
    ]
}

我要做的是查找卡片数组中有一个带有rfid_id值的子文档的所有rfid_id文档。

我试过蒙戈命令:

代码语言:javascript
复制
db.cardholders.update({}, 
    {$pull:{ "cards": {"rfid_id": ObjectId("51ee899ec15d5aaff39d335a")}}},
    false, false)

虽然我没有任何语法错误,但在我的收集中没有任何文档是有效的-在这件事上的任何帮助将是非常感谢的!

用完整的文档详细信息编辑:

代码语言:javascript
复制
{
    "_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")
            }
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 10:05:26

您的示例运行得很好:

代码语言:javascript
复制
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();

产出:

代码语言:javascript
复制
{
    "_id" : ObjectId("51ee899ec15d5aaff39d3353"),
    "cards" : [ ],
    "email" : "email",
    "first" : "first",
    "last" : "last",
    "phone" : "555 555 5555",
    "userRole" : "su",
    "zones" : [
        {
            "zone_id" : ObjectId("51ee899ec15d5aaff39d3357")
        }
    ]
}

虽然我必须稍微修改一下ObjectID,因为它最初在文档的简单版本和完整版本之间使用了不同的字符串。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17823198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档