2013-04-23 1 views
0

를 사용하여 bson 개체 내에서 bson 객체를 가져 오기 : 만 서브 필드를 가져올하고 싶습니다,하지만 난 방법을 모르겠어요(MongoDB를) 내가 좋아하는 문서가 포함 된 모음이 CSHARP

{ 
    field1: {subfield1:{ssfield1:5,ssfield2:6},subfield2:6}, 
    field2: 1, 
    ... 
} 

을 그것은 bsondocument 내에서 bsondocument를 반환하지 않는 것) csharp에서 쿼리 얻을.

어떤 도움이 필요합니까?

나는이 시도 :

String c = "mongodb://"+myip; 
MongoServer server = MongoServer.Create(c); 
MongoDatabase db = server.GetDatabase(mydb); 
var collection = db.GetCollection(col); 
string[] fields = new string[] { "field1" }; 
MongoCursor cursor = collection.Find().SetFields(fields); 

을하지만 내가 샘플 문서를 하나 개의 문서와 매우 유사으로 컬렉션을 만들어

{subfield2:6} 
+0

try collection.find(). first(). GetElement ("field1"). value; – genericuser

답변

0

반환 할 것 같다 :보기 전에

> db.test.find().pretty() 
{ 
    "_id" : ObjectId("518ac1aa92f1c388279a9979"), 
    "field1" : { 
     "subfield1" : { 
      "ssfield1" : 5, 
      "ssfield2" : 6 
     }, 
     "subfield2" : 6 
    }, 
    "field2" : 1 
} 
> 

내가 C# 코드를 재현하려고 시도했을 때 얻은 결과, 몽고의 동일한 쿼리를 살펴 보겠습니다. B 쉘 :

> db.test.find({}, { field1 : 1 }).pretty() 
{ 
    "_id" : ObjectId("518ac1aa92f1c388279a9979"), 
    "field1" : { 
     "subfield1" : { 
      "ssfield1" : 5, 
      "ssfield2" : 6 
     }, 
     "subfield2" : 6 
    } 
} 
> 

여기에서 주목해야 할 몇 가지가 있습니다

서버가 항상 유일한 필드가 반환
  • 필드 1이었다 _id 필드를 (우리가 요구 단지 무엇을) 반환 기본적으로
    1. 이 필드 1

    에 포함 있기 때문에

  • subfield2 내가 약간 다른 C#을 대구를 사용하여 반환 당신의 시험에 전자 :

    foreach (var document in collection.FindAll().SetFields("field1")) 
    { 
        Console.WriteLine(document.ToJson(new JsonWriterSettings { Indent = true })); 
    } 
    

    그리고 난 그 루프에서 가져온 출력이었다 다음 MongoDB의 쉘에서 출력 본질적으로 동일하다

    { 
        "_id" : ObjectId("518ac1aa92f1c388279a9979"), 
        "field1" : { 
        "subfield1" : { 
         "ssfield1" : 5.0, 
         "ssfield2" : 6.0 
        }, 
        "subfield2" : 6.0 
        } 
    } 
    

    .

    추가 질문이 있으면 알려주세요.

  • 관련 문제