我已经设置了数据库,因此我的类的ID属性是文档的ID:
BsonClassMap.RegisterClassMap<TestClass>(cm =>
{
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.ID));
});
要查询特定文档,我可以成功使用:
collection.FindOneById(123);
但是,如果我尝试等效的查询:
collection.FindOne(Query.EQ("ID", 123));
不会返回任何结果。
如何将文档ID作为查询的一部分包含在内和/或如何查询与给定ID集匹配的文档列表?我是否必须逐个查询它们?
修改 为了澄清,我不是在谈论内部MongoDB分配的对象ID,我在谈论用户分配的ID作为标识该文档的唯一密钥/ id以供以后检索。
答案 0 :(得分:2)
如果您正在谈论MongoDB使用的内部ID,那么它特别是BsonObjectId
,需要作为一个查询。此外,MongoDB文档的ID字段是小写的,并以下划线开头:_id
这样的代码应该有效:
collection.FindOne(Query.EQ("_id", ObjectId.Parse("4dad901291c2949e7a5b6aa8")));