MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Temukan SubDocument MongoDB bertingkat n

Di c# kita dapat membuat metode rekursif untuk mencapai skenario ini.

Ini adalah BsonDocument yang saya buat:

 BsonDocument doc = new BsonDocument {
            { "id","1"},
            { "DocType", "Unidade"},
            { "Nome", "TONY"},
            { "RG_InscricaoEstadual", "4347924938742"},
            { "Setores",new BsonArray {
             new BsonDocument {
             { "id","9" },
             { "Nome", "Child0"},
             { "Setores", new BsonArray { new BsonDocument {
                          { "id","10" },
                          { "Nome", "Child1"},
                          { "Setores", new BsonArray { new BsonDocument {
                                       { "id","11" },
                                       { "Nome", "Child2"},
                                       {  "Id","90228c56-eff2-46d2-a324-b04e3c69e15c" },
                                       { "DocType", "Setor"}
                                       }
                                       }
                          },
                          {  "Id","60228c56-dff2-46d2-a324-b04e3c69e15b" },
                          { "DocType", "Setor"}
                 }
                 }
                 },
                 {  "Id","8457e1b7-39dc-462c-8f46-871882faea2c" },
                 { "DocType", "Setor"}
                 }
            }
            }
            };

Anda dapat menggunakan Metode kueri Mongo c# untuk mendapatkan BsonDocument ini dari MongoDB.

Berikut adalah metode rekursif yang saya gunakan untuk menanyakan dokumen melalui "Id":BsonDocument result = GetID(doc, "90228c56-eff2-46d2-a324-b04e3c69e15c");

 public static BsonDocument GetID(BsonDocument doc, string queryId)
    {
        BsonDocument result = new BsonDocument();
        if (doc.Elements.Where(c => c.Name == "Setores").Count() != 0)
        {
            foreach (var item in doc.GetElement("Setores").Value.AsBsonArray)
            {
                var id = item.AsBsonDocument.GetElement("Id").Value;
                if (id == queryId)
                {
                    result = item.AsBsonDocument;
                    break;
                }
                result = GetID(item.AsBsonDocument, queryId);
            }
        }
        return result;
    }

Saya harap ini bisa memberi Anda beberapa tips.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $group (taman bermain mongo)

  2. Penyortiran khusus MongoDB

  3. Kelompokkan berdasarkan elemen array tertentu dengan kerangka agregasi mongo

  4. MongoDB $ln

  5. Pengaturan Proyek dengan Django 1.10, mongodb dan Python 3.4.3