为 Azure DocumentDB 动态构建查询
Dynamically build query for Azure DocumentDB
我最近从 MongoDB 切换到 Azure DocumentDB,并希望通过动态构建查询来检查集合中是否存在重复文档。
这就是我用 MongoDB 解决查询构建的方法:
MongoCollection collection = mongoDbDatabase.GetCollection<BsonDocument>("123");
var clauses = new List<IMongoQuery>();
foreach (var currResult in Results)
{
//add query
clauses.Add(Query.EQ("_result", currResult));
clauses.Add(Query.EQ("_id", myId));
}
var query = (clauses.Count > 0) ? Query.And(clauses) : null;
if (query != null)
{
//check if we have at least one duplicate
if (collection.FindOneAs<BsonDocument>(query) != null)
{
DoSomething();
}
}
现在我正在使用 LINQ 检查 DocumentDB 中的重复项:
var result = (from c in documentDb.CreateDocumentQuery<Results>(collection.SelfLink)
where c.result = currResult &&
c.id == myId
select c).AsEnumerable();
int numResults = result.Count();
if(numResults > 0)
{
DoSomething();
}
如何使用 DocumentDB 动态构建像 Query.And(clauses)
这样的 where 子句?
谢谢
我认为像这样的东西可以满足您的需求。由于 LINQ 允许链接 where 子句(自然与),您可以按如下方式构建查询:
var result = new Stuff { A = "a", B = "b" };
IQueryable<Stuff> query = client.CreateDocumentQuery<Stuff>(collectionLink);
if (result != null)
{
query = query.Where(s => s.A == result.A);
query = query.Where(s => s.B == result.B);
}
int numResults = query.AsEnumerable().Count();
if (numResults > 0)
{
// DoSomething();
}
注意:您可以单步执行调试器,ToString() 表示将显示 SQL LINQ 查询的翻译。
我最近从 MongoDB 切换到 Azure DocumentDB,并希望通过动态构建查询来检查集合中是否存在重复文档。
这就是我用 MongoDB 解决查询构建的方法:
MongoCollection collection = mongoDbDatabase.GetCollection<BsonDocument>("123");
var clauses = new List<IMongoQuery>();
foreach (var currResult in Results)
{
//add query
clauses.Add(Query.EQ("_result", currResult));
clauses.Add(Query.EQ("_id", myId));
}
var query = (clauses.Count > 0) ? Query.And(clauses) : null;
if (query != null)
{
//check if we have at least one duplicate
if (collection.FindOneAs<BsonDocument>(query) != null)
{
DoSomething();
}
}
现在我正在使用 LINQ 检查 DocumentDB 中的重复项:
var result = (from c in documentDb.CreateDocumentQuery<Results>(collection.SelfLink)
where c.result = currResult &&
c.id == myId
select c).AsEnumerable();
int numResults = result.Count();
if(numResults > 0)
{
DoSomething();
}
如何使用 DocumentDB 动态构建像 Query.And(clauses)
这样的 where 子句?
谢谢
我认为像这样的东西可以满足您的需求。由于 LINQ 允许链接 where 子句(自然与),您可以按如下方式构建查询:
var result = new Stuff { A = "a", B = "b" };
IQueryable<Stuff> query = client.CreateDocumentQuery<Stuff>(collectionLink);
if (result != null)
{
query = query.Where(s => s.A == result.A);
query = query.Where(s => s.B == result.B);
}
int numResults = query.AsEnumerable().Count();
if (numResults > 0)
{
// DoSomething();
}
注意:您可以单步执行调试器,ToString() 表示将显示 SQL LINQ 查询的翻译。