如何从BsonDocument中正确选择元素的值

时间:2016-06-16 12:56:12

标签: c# asp.net-mvc mongodb

所以我解释一下,我有一个控制器,可以在数据库中保存两个信息。 id从一个文档转到另一个文档。我达到了这个目的,但我的身份就是这样保存的:

_id=57629cb900a09432b8b3ada4

但我希望这样:

57629cb900a09432b8b3ada4

我看不出怎么做,因为我用第一个()方法取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;
}

2 个答案:

答案 0 :(得分:1)

使用拆分方法。它会将字符串拆分为数组。分裂字符作为第一个参数给出。

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

在您的代码中,您可以编写代替此

var id = objDocument.First()

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

答案 1 :(得分:1)

这个怎么样?

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

而不是......

var id = objDocument.First()