按架构筛选 mongodb 驱动器 c#
Filter by schema mongodb drive c#
有谁知道我是否可以在 c# 的 mongo 单元上 运行 这个架构。
我还生成了一个 BsonArray,但我不知道如何在上下文中编译它,有人可以帮忙吗?
下面的原始模式正在运行,我只是更改了字段的名称,因此可能存在语法错误,但我不知道如何在 c# 中 运行 它。
C#:
_db.GetCollection.Aggregate()....
BsonArray:
return new BsonArray
{
new BsonDocument("$limit", 1),
new BsonDocument("$project", new BsonDocument("_id", "$$REMOVE")),
new BsonDocument("$lookup", new BsonDocument
{
{ "from", "table1" },
......
Schema:
[
{
"$limit":1
},
{
"$project":{
"_id":"$$REMOVE"
}
},
{
"$lookup":{
"from":"Table1",
"pipeline":[
{
"$match":{
"date":{
"$gte":"ISODate(""2010-04-29T00:00:00.000Z"")",
"$lt":"ISODate(""2030-04-29T00:00:00.000Z"")"
}
}
},
{
"$addFields":{
"id":"$_id",
"value":1
}
},
{
"$project":{
"_id":0,
"typevalue":0
}
}
],
"as":"Table1"
}
},
{
"$lookup":{
"from":"Table2",
"pipeline":[
{
"$match":{
"dateInit":{
"$gte":"ISODate(""2010-04-29T00:00:00.000Z"")",
"$lt":"ISODate(""2030-04-29T00:00:00.000Z"")"
},
"externalId":1,
}
},
{
"$addFields":{
"id":"$_id",
"number":"$number",
"client":"$client",
"date":"$dateInit",
"value":"$value",
"status":0,
"event":[],
"file":"$arrayByte"
}
},
{
"$project":{
"_id":0,
"date":0,
"arrayByte":0,
"Rows":0
}
}
],
"as":"Table2"
}
},
{
"$project":{
"union":{
"$concatArrays":[
"$Table1",
"$Table2"
]
}
}
},
{
"$unwind":"$union"
},
{
"$replaceRoot":{
"newRoot":"$union"
}
},
{
"$sort":{
"date":-1
}
},
{
"$skip":1
}
]
public static BsonDocument[] GetList()
{
return new BsonDocument[]
{
new BsonDocument("$limit", 1),
new BsonDocument("$project", new BsonDocument("_id", "$$REMOVE")),
new BsonDocument("$lookup", new BsonDocument
{
{ "from", "Table1" },
{ "pipeline", new BsonArray}
.......
var list = await _db<Collection>.GetCollection.Aggregate<BsonDocument>(GetList()).ToListAsync();
if (list.Any())
var myList= list.Select(x => BsonSerializer.Deserialize<MyObject>(x)).ToList();
有谁知道我是否可以在 c# 的 mongo 单元上 运行 这个架构。 我还生成了一个 BsonArray,但我不知道如何在上下文中编译它,有人可以帮忙吗? 下面的原始模式正在运行,我只是更改了字段的名称,因此可能存在语法错误,但我不知道如何在 c# 中 运行 它。
C#:
_db.GetCollection.Aggregate()....
BsonArray:
return new BsonArray
{
new BsonDocument("$limit", 1),
new BsonDocument("$project", new BsonDocument("_id", "$$REMOVE")),
new BsonDocument("$lookup", new BsonDocument
{
{ "from", "table1" },
......
Schema:
[
{
"$limit":1
},
{
"$project":{
"_id":"$$REMOVE"
}
},
{
"$lookup":{
"from":"Table1",
"pipeline":[
{
"$match":{
"date":{
"$gte":"ISODate(""2010-04-29T00:00:00.000Z"")",
"$lt":"ISODate(""2030-04-29T00:00:00.000Z"")"
}
}
},
{
"$addFields":{
"id":"$_id",
"value":1
}
},
{
"$project":{
"_id":0,
"typevalue":0
}
}
],
"as":"Table1"
}
},
{
"$lookup":{
"from":"Table2",
"pipeline":[
{
"$match":{
"dateInit":{
"$gte":"ISODate(""2010-04-29T00:00:00.000Z"")",
"$lt":"ISODate(""2030-04-29T00:00:00.000Z"")"
},
"externalId":1,
}
},
{
"$addFields":{
"id":"$_id",
"number":"$number",
"client":"$client",
"date":"$dateInit",
"value":"$value",
"status":0,
"event":[],
"file":"$arrayByte"
}
},
{
"$project":{
"_id":0,
"date":0,
"arrayByte":0,
"Rows":0
}
}
],
"as":"Table2"
}
},
{
"$project":{
"union":{
"$concatArrays":[
"$Table1",
"$Table2"
]
}
}
},
{
"$unwind":"$union"
},
{
"$replaceRoot":{
"newRoot":"$union"
}
},
{
"$sort":{
"date":-1
}
},
{
"$skip":1
}
]
public static BsonDocument[] GetList()
{
return new BsonDocument[]
{
new BsonDocument("$limit", 1),
new BsonDocument("$project", new BsonDocument("_id", "$$REMOVE")),
new BsonDocument("$lookup", new BsonDocument
{
{ "from", "Table1" },
{ "pipeline", new BsonArray}
.......
var list = await _db<Collection>.GetCollection.Aggregate<BsonDocument>(GetList()).ToListAsync();
if (list.Any())
var myList= list.Select(x => BsonSerializer.Deserialize<MyObject>(x)).ToList();