MongoDB复杂查询语句记录

前段时间做业务监控,用到了MongoDB,有一个查询是把一个含array的list里面查询array中是否存在某一对unique值,不存在的情况下插入一条记录。

类似这样一个表:

Biao{

id,

field1,

field2,

List<string> Places,

List<People> Peoples

}

People{FistName, LastName, Age, xxx}

需要查询field1=xxx, (array)Places 包含ppp,(array)Peoples不含组合{FirstName, LastName}的document,插入一条People

 1  var fdb = Builders<Biao>.Filter;
 2 
 3  var subFilter1 = fdb.Where(
 4         t => t.field1 == xxx
 5           && t.Places.Contains("ppp"));
 6  var subFilter2 = fdb.ElemMatch(p => p.Peoples,
 7         Builders<People>.Filter.Where(t => t.FirstName == name1 && t.LastName== name2));
 8 
 9  var filter = fdb.And(subFilter1, fdb.Not(subFilter2));
10 
11  _collection.UpdateMany(filter,
12      Builders<Biao>.Update.AddToSet(e => e.Peoples, info));

类似就是这样的查法了,因为举例改了表名字段名,大概方法是这样,网上查了很久没有一样的,配合着各种查法自己写出来的,留着以后用。

原文地址:https://www.cnblogs.com/sylvialucy/p/8675149.html