MongoDB c # find () возвращает объект для _id, но это строка в документе - PullRequest
0 голосов
/ 04 июля 2018

Я унаследовал эту 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();

Я получаю ObjectID для поля _id только для небольшого подмножества результатов (все из которых имеют символы плюс в _id). Все _ids без символа плюс являются строками.

Я попытаюсь заставить их изменить документы так, чтобы длинная строка была превращена в поле, и чтобы все _id были идентификаторами объектов, но в то же время я хотел бы выяснить, что я могу сделать, чтобы получить строковый результат для ВСЕХ _ids.

Заранее спасибо.

...