我有一个mongo集合,其中包含一个包含类似于以下内容的文档的复合ID:
{
"_id" : {
"Id1" : NumberLong(123),
"Id2" : NumberInt(45),
"Guid1" : "Guid1"
"Guid2" : "Guid2"
},
"Field1" : NumberInt(1),
"Field2" : 0.0,
"Field3" : "String value",
}
我想通过提供仅_Id.Id1和_Id.Id2对的列表从此集合中选择多个文档(数千个)。我不确定如何在MongoDB或.Net驱动程序中执行此操作,更不用说它了。
如果我的问题不清楚,我将尽我所能对其进行伪造:
class QueryCriteria
{
Int64 Id1,
Int Id2,
}
Public GetList(List<QueryCriteria> criteria)
{
List<ResultModel> results = _collection.Find<ResultModel>(
(x, criteria) =>
x._id.Id1 == criteria.Id1 &&
x._id.Id2 == criteria.Id2 )
}
SQL伪(如果SQL也具有使列成为整个对象的能力)
SELECT Table1.*
FROM Table1 T1
JOIN Table2 T2
ON T1._id.Id1 = T2.Id1
AND T1._id.Id2 = T2.Id2
某些情况:从mongo中选择所有文档并使用linq进行内存过滤耗时很长,我在这里试图通过减少对Mongo的处理来追求性能。