2011-12-14 30 views
5

MongoDB'den veri alıyorum ve bir WPF veri kılavuzuna bağlanıyorum.Dize ObjectId'e dönüştürme

Kodum, birden fazla satır seçer kimlikleri alır ve seçilen kayıtları günceller:

var server = MongoServer.Create(this.connectionString); 
var db = server.GetDatabase(DATABASE); 
var viewTrue = db.GetCollection(RISKALERT_TBL); 
var count = viewTrue.Count(); 
foreach (RiskSettings row in grdRiskAlerts.SelectedItems) 
{ 
    viewTrue.Update(Query.EQ("ID",row.ID), Update.Set("View", "False")); 
    LoadandBindData(); 
} 

Ama Kaydın güncellenmesi etmez.

Belki row.id dizesinin döndüğünü ve ID veri türünün objectId olduğunu sanırdım.

Bu sorgu, yukarıdaki örnek dışında diğer veri türü için çalışıyor.

cevap

7

Bir dize ObjectId dönüştürmek için ObjectId.Parse(string) yöntemini kullanın. Ayrıca, "ID" yerine "_id" eşleştirmeyi de deneyin.

Yani gibi bir şey: NesneKimliği için bir ortak özelliği kurarken

viewTrue.Update(Query.EQ("_id", ObjectId.Parse(row.ID)), Update.Set("View", "False")); 
+1

Bu yalnızca dize zaten bir ObjectId ise, çalışır gibi görünüyor. Bu keyfi dizeleri çalışmak için görünmüyor. –

+1

@AsadSaeeduddin evet, int.Parse gibi. Dize bir "ObjectId" öğesine dönüştürülemiyorsa, elbette çalışmasını bekleyemeyiz. –

2

Aynı konuda karşılaştım.

Benim mülküm, ObjectID'yi bir dizeye dönüştürdü ve aşağıdaki kod parçacığını kullanarak bir ObjectID'ye döndü. tam ad kullanmak zorunda kaldı ben bu yardımcı olur bu MongoDB.Bson.ObjectId.Parse

public string Id 
    { 
     get { return Convert.ToString(_id); } 
     set { _id = MongoDB.Bson.ObjectId.Parse(value); } 
    } 

Hope gibi .Parse() erişmek için böylece

NesneKimliği bir seçenek olarak geliyor değildi!

0

Sadece ObjectId işlevini mongo'nuzdan gerekli kılmanız gerekir.

ObjectId = require('mongodb').ObjectID; 

Sonra bunu böyle kullanabilirsiniz: Ben kullanmaktı bulundu

viewTrue.Update(Query.EQ("ID",ObjectId(row.ID)), Update.Set("View", "False")); 
1

kolay yolu: new ObjectId(yourString)

ObjectId(row.ID) 

Yani kod hattınızı değiştirebilir. ..Bu bir dizeden MongoDB ObjectId verecek ve herhangi bir sorgunuzla çalışacaktır.