sql >> データベース >  >> NoSQL >> MongoDB

nレベルのネストされたサブドキュメントMongoDBを検索する

    C#では、このシナリオを実現するための再帰的なメソッドを作成できます。

    これが私が作成したBsonDocumentです:

     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"}
                     }
                }
                }
                };
    

    Mongo c#クエリメソッド このBsonDocumentをMongoDBから取得します。

    これは、「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;
        }
    

    これがあなたにいくつかのヒントを与えることを願っています。



    1. MongoDB-ドキュメント内の文字列の配列を照合するために集計フレームワークまたはmapreduceを使用します(プロファイル照合)

    2. 空の場合は親データを返しながら、サブドキュメント配列をフィルタリングします

    3. MongoDBによる高速ページング

    4. ApacheHBaseでスケーリングが実際にどのように機能するか