将BsonDocument转换为字符串
本文关键字:字符串 转换 BsonDocument | 更新日期: 2023-09-27 17:53:03
我有一个查询,需要返回一个产品及其所有信息的"_id",但当我打印的结果,我得到游标,而不是在MongoDB集合的值?
var query_id = dbCollection.Find(Query.EQ("_id", "50ed4ea05baffd13a44d0154"));
return query_id.ToString();
结果
MongoDB.Driver.MongoCursor`1[MongoDB.Bson.BsonDocument]
编辑我已经尝试了.ToJson()
方法,但只返回[]
var query_id = dbCollection.Find(Query.EQ("_id", "50ed4ea05baffd13a44d0154"));
var r = query_id.ToJson();
编辑以下是代码,这是一个基本的Windows窗体应用程序,我正在做基本的测试:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string connectionString = "mongodb://127.0.0.1";
var server = MongoServer.Create(connectionString);
if (server.State == MongoServerState.Disconnected)
{
server.Connect();
label1.Text = ("Server is connected to: " + connectionString);
button1.Enabled = false;
}
else
{
label1.Text = ("Server Error Check DB location");
}
var conn = server.GetDatabase("Acord");
var dbCollection = conn.GetCollection("Mappings");
var query = dbCollection.FindAll();
//textBox2.Text = query.ToList().ToJson();
var query_first = query.First();
//textBox2.Text = cursorResult.ToString();
var query_id = Query.EQ("_id", "1");//What ID do I put in here? This is were the error is now!
var entity = dbCollection.FindOne(query_id);
textBox2.Text = entity.ToString();
}
}
下面是我得到的错误:
An unhandled exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication1.exe
我显然在这里错过了什么?
您已经注意到,Find()
返回一个游标,可用于逐个遍历查询结果。但是您只需要一个返回项,因此使用FindOne()
—它将返回一个项而不是光标。
您还应该使用正确的查询。例如,MongoDB默认使用内部12字节的ObjectID,所以Query.EQ("_id", "1")
是完全错误的。如果您对查询不确定,请不带任何参数调用FindOne()
。
我建议你尝试在线MongoDB shell(在http://mongodb.org),其中包含一个交互式MongoDB教程。