带有子文档的mongoDB文档

时间:2014-08-03 17:40:53

标签: mongodb subdocument

我有以下结构:

  
      
  • 收藏   
        
    • 文档   
          
      • 消息   
            
        • field 1
        •   
        • field 2
        •   
        • field 3
        •   
      •   
    •   
  •   

文档将像以前一样开始,我需要通过搜索来找到文档:

db.document.find({" message.field1":" a"})

并在找到时,将另一条消息添加为数组,最终将如下所示:

  
      
  • 收藏   
        
    • 文档   
          
      • 消息   
            
        • field 1
        •   
        • field 2
        •   
        • field 3
        •   
      •   
      • 消息(新文档)   
            
        • field 1
        •   
        • field 2
        •   
        • field 3
        •   
      •   
    •   
  •   

我试图这样做:

db.packets.update(
    { $or: [
        { "message.field1": "a" } , { "message.field2":  "a" }
    ]},
    {
        packet: {
            "packet" : {
                "field1" : "whatever",
                "field2" : "Whatever",
                "field3" : "blahblah"
            }
        }
    },
    {
        upsert: true
    } )

但是mongo似乎没有找到我正在搜索的子文档......是否可以拥有多个数组?我想,也许mongodb不允许有多个同名的子文档?

谢谢你们,

大卫

1 个答案:

答案 0 :(得分:0)

我发现了我的问题,至少我认为我做了:

此:

{
    packet: {
        "packet" : {
            "field1" : "whatever",
            "field2" : "Whatever",
            "field3" : "blahblah"
        }
    }
}

实际应该是:

{
    "packet" : {
        "field1" : "whatever",
        "field2" : "Whatever",
        "field3" : "blahblah"
    }
}

第一个我正在寻找" packets.packets.field1",我使用" packets.field1"所以我不得不改变层次......

感谢大家的帮助!