如何将字符串转换为ObjectId

use*_*853 6 mongodb mongodb-.net-driver

我从MongoDB获取数据并绑定到WPF数据网格.

我的代码选择多行,检索ID并更新所选记录:

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();
}
Run Code Online (Sandbox Code Playgroud)

但它没有更新记录.

我想也许row.id返回字符串,ID数据类型是objectId.

此查询适用于除上述情况之外的其他数据类型.

Zai*_*sud 13

要将字符串转换为a ObjectId,请使用ObjectId.Parse(string)方法.

也尝试匹配"_id"而不是"ID".

所以类似于:

viewTrue.Update(Query.EQ("_id", ObjectId.Parse(row.ID)), Update.Set("View", "False")); 
Run Code Online (Sandbox Code Playgroud)

  • 这似乎只有在字符串已经是ObjectId时才有效.它似乎不适用于任意字符串. (2认同)

Bri*_*n J 5

在为ObjectID设置公共属性时遇到了相同的问题。

我的属性使用以下代码片段将ObjectID转换为字符串,然后又转换回ObjectID。

没有提供ObjectID作为选项,因此我必须使用完整的名称空间来访问.Parse()此类文件MongoDB.Bson.ObjectId.Parse

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

希望这可以帮助!