我继承了这个MongoDB,它被用作各种缓存 . 集合中所有文档的_id都是字符串,例如:

_someCommonLibraryName.ConnectorLib_2016_2_0.InventoryItem:MODERN CATCH 8 ATGR+ HCP

(是的,这是_id . )

问题似乎是任何带有加号的_ids .

当我像这样查询集合时:

var proj = new ProjectionDefinitionBuilder<BsonDocument>().Include("_id").Include("internalId");
var findFilter = Builders<BsonDocument>.Filter.And(
               Builders<BsonDocument>.Filter.Eq("recordType", itemName),
               Builders<BsonDocument>.Filter.Exists("internalId"),
               Builders<BsonDocument>.Filter.Not(Builders<BsonDocument>.Filter.Type("internalId", BsonType.Null)),
               Builders<BsonDocument>.Filter.Eq("success", true)
               );

objsWithInternalId = collection.Find<BsonDocument>(findFilter).Project(proj).ToEnumerable();

我只返回一小部分结果的_id字段的ObjectID(所有这些都在_id中有加号) . 没有加号的所有_ids都是字符串 .

我将尝试让他们允许我更改文档,以便将长字符串设置为字段并允许所有_ids为ObjectIds,但在此期间我想弄清楚我能做些什么来获取字符串ALL _ids的结果 .

提前致谢 .