C# 如何使用嵌套的expandoObjects创建BSON文档,其中一个是已转换的字典
我有一个expandoObject d,我想迭代一个字典,获取它的键和值来创建一个新对象,{key:value,key:value},然后将这个新对象分配给d,当然最后将它序列化为bsonDocument进行插入 如果简单地使用字典并执行.toArray(),我不会得到mongoDB序列化错误,但是如果我从新对象中创建一个新的expandObject,或者简单地将我提到的字典作为d.newObject传递,我会得到一个没有帮助的mondodb序列化错误C# 如何使用嵌套的expandoObjects创建BSON文档,其中一个是已转换的字典,c#,json,mongodb,bson,C#,Json,Mongodb,Bson,我有一个expandoObject d,我想迭代一个字典,获取它的键和值来创建一个新对象,{key:value,key:value},然后将这个新对象分配给d,当然最后将它序列化为bsonDocument进行插入 如果简单地使用字典并执行.toArray(),我不会得到mongoDB序列化错误,但是如果我从新对象中创建一个新的expandObject,或者简单地将我提到的字典作为d.newObject传递,我会得到一个没有帮助的mondodb序列化错误 我该怎么做呢(1),对于BSON文档所期望
我该怎么做呢(1),对于BSON文档所期望的可以序列化和不能序列化的内容,我还缺少什么呢?与其自己用
ExpandoObject
为MongoDB编写这种动态类型功能,不如使用类似的动态ORM或ODM,MongoDB支持仍处于封闭测试阶段,但应该很快公开提供。下面是一个示例,其中Slazure Linq查询从“TestCustomers”集合返回一些文档,并且每个文档属性名称都写入控制台:
using SysSurge.Slazure.MongoDB.Linq;
using SysSurge.Slazure.Core;
using SysSurge.Slazure.Core.Linq.QueryParser;
public void EnumProperties()
{
// Get a reference to the collection
dynamic storage = new QueryableStorage<DynDocument>("mongodb://user:pass@example.org/MongoDBExample");
QueryableCollection<DynDocument> collection = storage.TestCustomers;
// Build collection query
var queryResult = collection.Where("SignedUpForNewsletter = true and Age < 22");
foreach (DynDocument document in queryResult)
{
foreach (KeyValuePair<string, IDynProperty> keyValuePair in document)
{
Console.WriteLine(keyValuePair.Key);
}
}
}
foreach (DynDocument document in queryResult)
{
BsonDocument bsonDoc = document.Document
Console.WriteLine(bsonDoc["someProperty"].AsString());