MongoDB查询并更新一粟

//更新操作使用collection的Update方法,有泛型和非泛型两个版本:

//其签名如下(列出了两个简单并常用的的重载,还有几个):

public virtual WriteConcernResult Update(IMongoQuery query, IMongoUpdate update);
public virtual WriteConcernResult Update(IMongoQuery query, IMongoUpdate update, UpdateFlags flags)
/// <summary>
    /// 学生实体类
    /// </summary>
    public class Student
    {
        public ObjectId Id { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 年龄
        /// </summary>
        public Int32 Age { get; set; }
        /// <summary>
        /// 地址
        /// </summary>
        public Address Address { get; set; }

    }
    /// <summary>
    /// 地址
    /// </summary>
    public class Address
    {
        /// <summary>
        /// 城市
        /// </summary>
        public String City { get; set; }
        /// <summary>
        /// 邮编
        /// </summary>
        public String PostCode { get; set; }
    }
//在我们关系数据库中,比如oracle或者sqlserver中按照实体类设计,表结构应该是两个,学生信息表以及地址表,但是我们假设存储在一个表中方便我们类比;我要更新数据库中信息,通常关系数据库中我们是这么做的:

update tableName set  a='a' and  b='b'  where  c='c'

//在mongodb中我们就是向下面这样做:

use dbName;

db.CollectionName.update({query:"query"},{"$set":{update:"update"}})
首先构造IMongoQuery:

//a.通过QueryBuilder<T>构造

var t1 = queryBuilder.EQ<String>(t => t.Address.City, "北京");//where city="北京"
//b.通过Query构造

 var t2 = Query.EQ("Address.City", "北京");//where city="北京"
 var t3 = Query<Student>.EQ<String>(t => t.Address.City, "北京");//where city="北京"
//其次,构造IMongoUpdate

var u1 = Update<Student>.Set<String>(t => t.Address.City, "上海");//set city="上海"
var u2 = Update.Set("Address.City", "上海");//set city="上海"
这样可以往下调用update方法了

collection.Update(t1, u2);//只更新满足t1的一个文档对象
collection.Update(t1, u2, UpdateFlags.Multi);//更新满足t1的所有文档对象
上一篇:10分钟 PySimpleGUI 图形界面入门


下一篇:linux网络配置正确,能够ping通内网地址,无法打开外网网页