如何在mongoDB中的嵌入式文档中提取特定元素

Charan tej

我有一个MongoDB嵌入式文档,其中包含多个文档阵列。

例如:

{
    "_id" : ObjectId("594b7b7d4064e264420e38d0"),
    "UnitId" : "594b75d44064e264420e3869",
    "UnitName" : "PARKING",
    "UnitIcon" : "./upload/file-1498117588607.jpg", 
    "Stream" : {
        "_id" : ObjectId("594b7b7d4064e264420e38d1"),
        "Types" : [ 
            {
                "TypeId" : "594b9a884064e264420e3b56",
                "TypeName" : "TR/RC",
                "Travel" : false
            }, 
            {
                "TypeId" : "594b9a844064e264420e3b55",
                "MaterialStreamName" : "RW",              
                "Travel_Required" : false
            }, 
            {
                "TypeId" : "594b9a9d4064e264420e3b58",
                "TypeName" : "ST",               
                "Travel_Required" : true
            }, 
            {
                "TypeId" : "594b9a764064e264420e3b53",
                "TypeName" : "FD",               
                "Travel_Required" : true
            }
        ]
    }   
},{
    "_id" : ObjectId("594b7b7d4064e264420e38d1"),
    "UnitId" : "594b75d44064e264420e3870",
    "UnitName" : "CAFE",
    "UnitIcon" : "./upload/file-1498117588608.jpg", 
    "Stream" : {
        "_id" : ObjectId("594b7b7d4064e264420e38d2"),
        "Types" : [ 
            {
                "TypeId" : "594b9a884064e264420e3b56",
                "TypeName" : "TR/RC",
                "Travel" : false
            }, 
            {
                "TypeId" : "594b9a844064e264420e3b55",
                "MaterialStreamName" : "RW",              
                "Travel_Required" : false
            }, 
            {
                "TypeId" : "594b9a9d4064e264420e3b58",
                "TypeName" : "ST",               
                "Travel_Required" : true
            }, 
            {
                "TypeId" : "594b9a764064e264420e3b53",
                "TypeName" : "FD",               
                "Travel_Required" : true
            }
        ]
    }   
},{
    "_id" : ObjectId("594b7b7d4064e264420e38d2"),
    "UnitId" : "594b75d44064e264420e3870",
    "UnitName" : "CAFE",
    "UnitIcon" : "./upload/file-1498117588608.jpg", 
    "Stream" : {
        "_id" : ObjectId("594b7b7d4064e264420e38d3"),
        "Types" : [                 
            {
                "TypeId" : "594b9a9d4064e264420e3b58",
                "TypeName" : "ST",               
                "Travel_Required" : true
            },     
            {
                    "TypeId" : "594b9a884064e264420e3b56",
                    "TypeName" : "TR/RC",
                    "Travel" : false
                }, 
                {
                    "TypeId" : "594b9a844064e264420e3b55",
                    "MaterialStreamName" : "RW",              
                    "Travel_Required" : false
                }, 
                {
                    "TypeId" : "594b9a764064e264420e3b53",
                    "TypeName" : "FD",               
                    "Travel_Required" : true
                }
            ]
        }   
    }

我有许多文档结合了UnitID和TypeID(在Types对象内部)。我必须通过匹配UnitId和TypeID来删除该Type元素。我用过$ pull,但是没有实现。

    db.getCollection('units_details').update(
    { "UnitId" : "594b75d44064e264420e3870","Stream[0].Types.$.TypeID" : "594b9a884064e264420e3b56"    }, 
    { $pull: { "Stream[0].Types"            
                 "TypeId" : "594b9a884064e264420e3b56",
                        "TypeName" : "TR/RC",                            
                        "Travel" : false
          } }} ,{multi:true}

    );

如何实现删除Types数组中Type顺序正在更改的types array中的元素。

s7vr

您可以使用以下任一查询来查询嵌套数组。

db.getCollection('units_details').update(
  {"UnitId":"594b75d44064e264420e3870","Stream.Types.TypeId":"594b9a884064e264420e3b56"},
  {"$pull":{
    "Stream.$.Types":{
      "TypeId":"594b9a884064e264420e3b56",
      "TypeName":"TR/RC",
      "Travel":false}
  }},
  {"multi":true}
);

或(更适用于多条件方案)

db.getCollection('units_details').update( {
    "UnitId":"594b75d44064e264420e3870",
    "Stream":{
      "$elemMatch":{
        "Types":{
          "$elemMatch":{"TypeId":"594b9a884064e264420e3b56"}
        }
      }
    }
  },
  {"$pull":{
    "Stream.$.Types":{
      "TypeId":"594b9a884064e264420e3b56",
      "TypeName":"TR/RC",
      "Travel":false}
  }},
  {"multi":true}
 )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在mgo Mongodb中选择所有相同类型的嵌入式文档?

更新Mongodb中的嵌入式文档:性能问题?

mongodb聚合中的项目嵌套嵌入式文档

MongoDb更新同一阵列中的多个特定嵌入式文档

基于范围查询MongoDB中嵌入式文档的数组

MongoDB-在嵌入式文档中找不到特定字段

将嵌入式文档数组转换为mongoDB中的元素数组

如何在mongodb中搜索嵌入式文档?

查询Spring Data MongoDB中嵌入式文档的数组

如何在嵌入式文档中查找某个元素

更新mongodb中arrays对象的arrays的嵌入式文档

从html中的嵌入式脚本标签中提取数据

嵌入式文档的$ divide元素-MongoDB聚合

如何在mongodb中使用node.js删除嵌入式(嵌套)文档

如何在嵌入式数组mongodb中查询嵌入式文档

如何从SVG文件中提取嵌入式图像?

使用Java从文档中提取嵌入式文件

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

返回特定的mongodb嵌入式文档

如何在mongoDB中的多对多关系中使用嵌入式文档结构?

如何选择嵌入式文档列表作为根元素

如何在MongoDB中的嵌入式文档中获得同一级别的所有字段

查询MongoDB中的嵌入式文档

如何在MongoDB中查询数组中的单个嵌入式文档?

与数组比较,如何在mongodb中检索部分嵌入式文档?

使用python(pymongo)在mongodb中编辑嵌入式文档

在mongodb中展开嵌入式文档

如何在Meteor中循环浏览嵌入式文档

如何在 MongoDb 中查询嵌入式文档?