我正在尝试使用BsonDocument
连接两个未键入的对象。这些查询是基于某些外部数据生成的。我正在构建表达式树,并将其传递给Linq查询。
我的查询如下所示:
var plan = _db.GetCollection<BsonDocument>("table_1")
.Where(someFunc)
.Join(_db.GetCollection<BsonDocument>("table_2"),
t1=> t1["some_key"],
t2=> t2["some_key"])
(t1v,t2v)=> new Tuple<BsonDocument, BsonDocument>(t1v,t2v)).ToString();
这将引发null引用异常。 但是,如果我使用匿名对象,它将正常工作。
var plan = _db.GetCollection<BsonDocument>("table_1")
.Where(someFunc)
.Join(_db.GetCollection<BsonDocument>("table_2"),
t1=> t1["some_key"],
t2=> t2["some_key"])
(t1v,t2v)=> new {t1v, t2v}).ToString();
这会产生我想要的适当放松::
aggregate([{ "$match" : { "location" : { "$geoWithin" : { "$centerSphere" : [[-73.485354000000001, 40.759214], 0.00025232195545501769] } } } }, { "$lookup" : { "from" : "table_2", "localField" : "some_key", "foreignField" : "some_key", "as" : "t2" } }, { "$unwind" : "$t2v" }])
使用元组在做什么错? (我尝试过的所有异常匿名对象似乎都抛出错误)