Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#MongoDB在使用过滤器时使用camelCased字段名_C#_Mongodb - Fatal编程技术网

c#MongoDB在使用过滤器时使用camelCased字段名

c#MongoDB在使用过滤器时使用camelCased字段名,c#,mongodb,C#,Mongodb,我有一个不可变的模型类,它通过BsonClassMap.RegisterClassMap映射到mongo。如果我理解正确,当我想用camelCased names将属性存储到数据库中时,约定包将不起作用,所以我必须使用SetElementName方法手动设置它,如下所示 BsonClassMap.RegisterClassMap<Document>(cm => { cm.MapIdMember(d => d.Id).SetElementName("id");

我有一个不可变的模型类,它通过BsonClassMap.RegisterClassMap映射到mongo。如果我理解正确,当我想用camelCased names将属性存储到数据库中时,约定包将不起作用,所以我必须使用SetElementName方法手动设置它,如下所示

BsonClassMap.RegisterClassMap<Document>(cm =>
  {
    cm.MapIdMember(d => d.Id).SetElementName("id");
    cm.MapProperty(d => d.SchemaId).SetElementName("schemaId");
    cm.MapProperty(d => d.Filename).SetElementName("filename");
    cm.MapProperty(d => d.Content).SetElementName("content");
    cm.MapCreator(d => new Document(d.Id, d.SchemaId, d.Filename, d.Content));
  });
BsonClassMap.RegisterClassMap(cm=>
{
cm.MapIdMember(d=>d.Id).SetElementName(“Id”);
cm.MapProperty(d=>d.SchemaId).SetElementName(“SchemaId”);
cm.MapProperty(d=>d.Filename).SetElementName(“文件名”);
cm.MapProperty(d=>d.Content).SetElementName(“Content”);
MapCreator(d=>新文档(d.Id,d.SchemaId,d.Filename,d.Content));
});
问题在于过滤。我想过滤camelCased属性,由于某些原因,有些属性可以工作,有些则不能

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("id", Guid.Parse("9e50b066-4320-4c30-9ce1-e939fb13836d")),
这将工作并生成一个具有给定Id的文档

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("Id", Guid.Parse("9e50b066-4320-4c30-9ce1-e939fb13836d")),
var fBuilder=Builders.Filter;
fBuilder.Eq(“Id”,Guid.Parse(“9e50b066-4320-4c30-9ce1-e939fb13836d”),
但事实并非如此

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("id", Guid.Parse("9e50b066-4320-4c30-9ce1-e939fb13836d")),
var fBuilder=Builders.Filter;
fBuilder.Eq(“id”,Guid.Parse(“9e50b066-4320-4c30-9ce1-e939fb13836d”),
这是可行的,尽管我认为不应该这样

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("Filename", "document.json"),
var fBuilder=Builders.Filter;
fBuilder.Eq(“文件名”、“document.json”),
令人惊讶的是,这也是我想要的所有属性

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("filename", "document.json"),
var fBuilder=Builders.Filter;
fBuilder.Eq(“文件名”、“document.json”),
我认为这与房产类型有关

var fBuilder = Builders<Document>.Filter;
fBuilder.Eq("filename", "document.json"),
目前我正在使用MongoDB.Driver 2.9

编辑:使用SortDefinition进行排序时,不会出现这样的问题,而且一切正常