最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何$在MONGODB中的嵌套文档数组中拉取文档

运维笔记admin9浏览0评论

如何$在MONGODB中的嵌套文档数组中拉取文档

如何$在MONGODB中的嵌套文档数组中拉取文档

如何从parentHierarchy中具有userId =“fadd66e5-97b9-4ae0-86ca-7922bf9d1da4”的文档中删除数据,并使organizationId =“d44a90c0-3f04-4dbd-97f0-cd1be3baf2de”。

这是文件。

    [ {
        "name": "ABC", 
        "organization": [
           {
             "organizationId": "d44a90c0-3f04-4dbd-97f0-cd1be3baf2de",
             "parentHierarchy": [
                {
                    "privelege": "Admin",
                    "userId": "fadd66e5-97b9-4ae0-86ca-7922bf9d1da4"
                },
                {
                    "privelege": "Manager",
                    "userId": "fadd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
              ]
            },
          {
            "organizationId": "d44a90c1-3f04-4dbd-97f0-cd1be3baf2de",
            "parentHierarchy": [
                {
                    "privelege": "Admin",
                    "userId": "fada66e5-97b9-4ae0-86ca-7922bf9d1da4"
                },
                {
                    "privelege": "Manager",
                    "userId": "fndd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
            ]
         }
       ]
    },
    {
        "name": "PQR", 
        "organization": [
           {
             "organizationId": "d44a90c0-3f04-4dbd-97f0-cd1be3baf2de",
             "parentHierarchy": [
                {
                    "privelege": "Admin",
                    "userId": "fadd66e5-97b9-4ae0-86ca-7922bf9d1da4"
                },
                {
                    "privelege": "Manager",
                    "userId": "fadd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
              ]
            }
       ]
    }]

输出文档应该采用这种格式(在此组织中没有父层次结构“d44a90c0-3f04-4dbd-97f0-cd1be3baf2de”)。

   [ {
        "name": "ABC", 
        "organization": [
           {
             "organizationId": "d44a90c0-3f04-4dbd-97f0-cd1be3baf2de",
             "parentHierarchy": [
                {
                    "privelege": "Manager",
                    "userId": "fadd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
              ]
            },
          {
            "organizationId": "d44a90c1-3f04-4dbd-97f0-cd1be3baf2de",
            "parentHierarchy": [
                {
                    "privelege": "Admin",
                    "userId": "fada66e5-97b9-4ae0-86ca-7922bf9d1da4"
                },
                {
                    "privelege": "Manager",
                    "userId": "fndd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
            ]
         }
       ]
    },
    {
        "name": "PQR", 
        "organization": [
           {
             "organizationId": "d44a90c0-3f04-4dbd-97f0-cd1be3baf2de",
             "parentHierarchy": [
                {
                    "privelege": "Manager",
                    "userId": "fadd56e5-97b9-4ae0-86ca-7922bf9d1da4"
                }
              ]
            }
       ]
    }]

我使用了这样的查询,但没有返回正确的数据。

  var condition = {"organizationanizationId":conditionId,
            "organization.parentHierarchy.userId": userdata[0]._id}
  var update = {
       "$pull":{"organization":
                  {"organizationId": conditionId,
                   "parentHierarchy":{"userId": userdata[0]._id}}}
 }

 db.collection('users').update(condition, update, {multi: true}, 
    function(error, documents) {
    if(error){
        console.log("error in to update parentHierarchy");

    }
    else{
        console.log("updated Documents");

    }
})
回答如下:

拉操作符通过应用查询来工作,因为它是顶级文档,因此当条件找到文档时,它会删除organizationembedded数组中的文档。

你必须使用位置运算符来删除parentHierarchy嵌入式数组中的文档。

查询条件定位organization元素,后跟$pull,以删除与parentHierarchy文档数组中的userid匹配的所有文档。

var condition={"organizationanizationId":conditionId}
var update={"organization.$.parentHierarchy":{"userId": userdata[0]._id}}
发布评论

评论列表(0)

  1. 暂无评论