- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
每当我尝试从集合中获取 ID 列表时:
var messages = db.GetCollection<MessageExchange>(collectionName);
var ids = messages
.AsQueryable()
.Where(_=> true)
.Select(x => x.Id)
.ToList();
我遇到了转换错误:
System.FormatException HResult=0x80131537 Message=Cannot deserialize a 'String' from BsonType 'ObjectId'. Source= StackTrace:
我无法修改类的定义,因为它在我无法更改的包中实现。因此解决方案:
[BsonRepresentation(BsonType.ObjectId)]
在上面,不可能。基于this .
是否可以在 Linq 查询中转换它?
最佳答案
不,因为db.GetCollection<MessageExchange>
将集合定义为强类型对象,驱动程序将结合执行的任何进一步逻辑(使用 linq 或其他方式)对其进行处理。
您最好的选择是:
在您自己的代码中定义一个与您的 Mongo 集合兼容的类,然后使用该类反序列化您的结果 db.GetCollection<MyCustomMessageExchange>
然后您可以将其与上面的 linq 查询一起使用以仅选择 ID。
只需使用默认值 BsonDocument
定义您的集合并使用投影: db.GetCollection<BsonDocument>.Find(new BsonDocument()).Project("{_id: 1}").ToList()
关于c# - 无法在 MongoDb 集合查询中将 ObjectId 反序列化为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55414899/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!