1

製品とそのすべての情報を「_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();

EDITこれがコードです。これは、基本的なテストを行っている基本的な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

ここで何かが明らかに欠けていますか?

4

1 に答える 1

2

お気付きのように、Find()はカーソルを返します。これは、クエリ結果を 1 つずつトラバースするために使用できます。ただし、返されるアイテムは 1 つしか必要ないため、FindOne()- を使用すると、カーソルの代わりにアイテムが返されます。

また、正しいクエリを使用する必要があります。たとえば、デフォルトでは、MongoDB は内部で 12 バイトのObjectIDを使用するため、Query.EQ("_id", "1")単純に間違っています。クエリが不明な場合は、FindOne()引数なしで呼び出します。

インタラクティブな MongoDB チュートリアルを含むオンラインの MongoDB シェル ( http://mongodb.org ) を試すことをお勧めします。

于 2013-01-14T07:52:38.630 に答える