MongoDB C# برنامج التشغيل غير قادر على العثور على معرف الكائن؟

StackOverflow https://stackoverflow.com/questions/2453513

  •  20-09-2019
  •  | 
  •  

سؤال

باستخدام برنامج تشغيل MongoDB C# (http://github.com/samus/mongodb-csharp) ، يبدو أنني غير قادر على الحصول على البيانات بواسطة ObjectID. أسفل الأمر الذي أستخدمه:

var spec = new Document { { "_id", id } };
var doc = mc.FindOne(spec);

لقد جربت هذا أيضًا:

var spec = new Document { { "_id", "ObjectId(\"" + id + "\")" } };
var doc = mc.FindOne(spec);

كلاهما لا يعيد شيئًا. وفي الوقت نفسه ، إذا كنت قد استعنتها من وحدة تحكم Mongo ، فإنها تعيد النتيجة المتوقعة.

سؤالي هو ، هل يدعم برنامج التشغيل هذا بالفعل البحث بواسطة ObjectId؟

شكرًا..

هل كانت مفيدة؟

المحلول

إنه يدعم الجلب بواسطة معرف الكائن. يجب أن يكون متغير المعرف الخاص بك OID. هل هو النوع الصحيح؟

هنا برنامج كامل سوف

  • الاتصال بـ Mongo
  • أدخل وثيقة
  • جلب المستند مرة أخرى باستخدام معرفه
  • اطبع تفاصيل المستند.

// Connect to Mongo
Mongo db = new Mongo();
db.Connect();

// Insert a test document
var insertDoc = new Document { { "name", "my document" } };
db["database"]["collection"].Insert(insertDoc);

// Extract the ID from the inserted document, stripping the enclosing quotes
string idString = insertDoc["_id"].ToString().Replace("\"", "");

// Get an Oid from the ID string
Oid id = new Oid(idString);

// Create a document with the ID we want to find
var queryDoc = new Document { { "_id", id } };

// Query the db for a document with the required ID 
var resultDoc = db["database"]["collection"].FindOne(queryDoc);
db.Disconnect();

// Print the name of the document to prove it worked
Console.WriteLine(resultDoc["name"].ToString());

نصائح أخرى

var spec = مستند جديد {{"_id" ، objectID.Parse (id)}} ؛

var doc = mc.findone (spec) ؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top