2016-06-16 2 views
1

Так что я объясню, у меня есть контроллер, который сохраняет две информации в базе данных. И идентификатор берется из одного документа в другой. Я этого добиться, но мой идентификатор сохраняется таким образом:Как сделать правильный выбор значения элемента из BsonDocument

_id=57629cb900a09432b8b3ada4 

Но я хочу это так:

57629cb900a09432b8b3ada4 

Я не могу видеть, как это сделать, потому что я беру кулак элемент документ bson с методом first().

Если кто-то может помочь я кладу контроллер только здесь:

EDIT: ДОБАВЛЕНО КОДА Предоставлено @ 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"], но похоже, что это был неправильный путь, i Я получаю плохой идентификатор, но с вашим GetElement это нормально :) так спасибо! –

+0

Рад, что это помогло.Вы можете перефразировать название своего вопроса, потому что оно вводит в заблуждение. @SurenSrapyan предоставил то, что он запрашивает, то есть обратное действие concatenate, которое является «split», но вам действительно нужен был правильный выбор значения элемента из BsonDocument. – u8it

+0

Вы правы, я сделал изменения, возможно, это поможет некоторым другим людям –

1

Используйте метод Split.Он разделит строку на массив. Символ расщепления задается как первый параметр.

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

В своем коде вы можете написать вместо этого

var id = objDocument.First() 

это

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

Хм, кажется, законны, но я не мою строку, она сохраняется Повсеместно в BSON документе. Я не вижу, как сделать эту работу с моим кодом –

+0

@ChristianPliso на вашем C#, вы получаете строку? –

+0

Я просто сохраняю идентификатор объекта, и в моем db он сохранен так, как я сделал, и я хотел бы сохранить только id –

Смежные вопросы