2016-06-16 5 views
1

그래서 설명 하겠지만 데이터베이스에는 두 가지 정보를 저장하는 컨트롤러가 있습니다. 이드는 한 문서에서 다른 문서로 옮겨집니다. 나는 이것을 달성하지만 내 ID는 그런 식으로 저장됩니다BsonDocument에서 요소 값을 올바르게 선택하는 방법

_id=57629cb900a09432b8b3ada4 

그러나 내가 이렇게 원하는 : 나는의 주먹 요소를 데려 갈거야 때문에 작업을 수행하는 방법을 볼 수 없습니다

57629cb900a09432b8b3ada4 

을 first() 메소드가있는 bson 문서.

편집 : 누군가가 난 그냥 여기 내 컨트롤러를 넣어 도움이 될 수있는 경우

은 (덕분에 그에게) @의 P57에서 제공하는 코드를 추가 :

var id = objDocument[_id]; 

string id = objDocument.GetElement("_id").Value.ToString(); 

을 그래서이되다 우리는 지금 :

public ActionResult LancerComparaison(ResultViewModel resultViewModel) 
{ 
    if (resultViewModel!= null) 
    { 
     UserInformationViewModel info = resultViewModel.UserInformationViewModel; 
     var client = new MongoClient("mongodb://localhost:27017"); 
     var objDatabase = client.GetDatabase("Test"); 
     var collection = objDatabase.GetCollection<BsonDocument>("UsersInformations"); 
     BsonDocument objDocument = new BsonDocument { 
     {"Nom",info.NomUser}, 
     {"Prenom",info.PrenomUser}, 
     {"Email",info.EmailUser}, 
     }; 
     collection.InsertOne(objDocument); 
     string id = objDocument.GetElement("_id").Value.ToString(); 
     Session["IdentifiantUserInformation"] = id; 

     List<ObjetTransfert> listePrestationsObjetsTransferts = new List<ObjetTransfert>(); 
     ResultatComparaison resultatComparaison; 
     ConvertGViewModelToGBd(resultViewModel, listePrestationsObjetsTransferts); 
     _compaSBT.ComparerP(listePrestationsObjetsTransferts, out resultatComparaison, 
      Enums.E.T); 

     //Enregistrer d'abord le resultat en Bd 
     resultatComparaison.IdentifiantResultatComparaison = new Guid().ToString(); 
     resultatComparaison.IdentifiantUserInformation = id.ToString(); 
     _resultatComparaisonService.Create(resultatComparaison); 

     Session["IdentifiantResultatComparaison"] = resultatComparaison.Id; 


     return View(); 
    } 
    return null; 
} 

답변

1

무엇으로 쓸 수있다? 대신이의

string id = objDocument.GetElement("_id").Value 

은 ...

var id = objDocument.First() 
+0

그게 좋을 것 같습니다하지만 var id = objDocument [ "_ id"]하지만 올바른 방법이 아닌 것 같아요. 나쁜 아이디를 얻었지만 GetElement를 사용하면 괜찮습니다. :) 감사합니다! –

+0

도움이 되니 기쁩니다.오해의 소지가 있으므로 질문의 제목을 다시 말해야 할 수도 있습니다. @SurenSrapyan은 'split'인 concatenate의 반대 동작에 대해 묻는 것을 제공했지만 실제로 필요한 것은 BsonDocument에서 요소의 값을 적절히 선택하는 것이 었습니다. – u8it

+0

네 말이 맞아, 나는 변화를 만들었다. 다른 사람들에게 도움이 될지도 모른다. –

1

스플릿 메서드를 사용하십시오. 문자열을 배열로 분할합니다. 분할 문자는 첫 번째 매개 변수로 제공됩니다. 코드에서

string[] tokens = "_id=57629cb900a09432b8b3ada4".Split('='); 
tokens[0]; // _id 
tokens[1]; // 57629cb900a09432b8b3ada4 

대신이

var id = objDocument.First() 

이 약이

var id = objDocument.First().Split('=')[1]; 
+0

흠이 합법적 인 것 같다하지만 난 내 문자열을하지 않아도, 그것은 bson 문서 throught를 저장합니다. 이 코드를 사용하여이 작업을 수행하는 방법을 알지 못합니다. –

+0

@ChristianPliso가 C#에서 문자열을 가져 오는 중입니까? –

+0

난 그냥 개체의 ID를 저장하고 내 DB에 내가했던 방식을 저장하고 오직 id를 저장하고 싶습니다 –

관련 문제