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