MongoDB内嵌文档操作
实体定义:
[BsonIgnoreExtraElements]
public class Person : BaseEntity
{
public string FirstName { get; set; } public string LastName { get; set; } public string Password { get; set; } public List<Attr> Attribute { get; set; }
} public class Attr
{
public string Id { get; set; } public string Name { get; set; }
}
数据库存储内容形式:
{
"_id" : ObjectId("5af189270d8ef62bb49d045e"),
"FirstName" : "",
"LastName" : "",
"Password" : "",
"Attribute" : [
{
"_id" : "",
"Name" : ""
},
{
"_id" : "",
"Name" : ""
},
{
"_id" : "",
"Name" : ""
}
]
}

1. 删除内嵌字段的值:
如删除Attribute子集合:
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.Unset(x => x.Attribute);
var result = this.personRepository.Collection.UpdateOne(filter, update);
2. 删除Attribute集合中Id等于6的内嵌文档
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.PullFilter<Attr>(x => x.Attribute, y => y.Id.Equals(""));
var result = this.personRepository.Collection.UpdateOne(filter, update);
或者
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.PullFilter(x => x.Attribute, y => y.Id.Equals(""));
var result = this.personRepository.Collection.UpdateOne(filter, update);
或者
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.PullFilter("Attribute", Builders<Attr>.Filter.Eq("_id",6));
var result = this.personRepository.Collection.UpdateOne(filter, update);
3. 更新FirstName的值
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.Set(x => x.FirstName, "22222");
var result = this.personRepository.Collection.UpdateOne(filter, update);
4. 往Attribute里添加一条记录
var filter = Builders<Person>.Filter.Where(x => x.Id == id);
var update = Builders<Person>.Update.Push<Attr>(x => x.Attribute, new Attr() { Id = "7", Name = "7" });
var result = this.personRepository.Collection.UpdateOne(filter, update);
MongoDB内嵌文档操作的更多相关文章
- mongodb内嵌文档的javaapi,增删改查
数据结构: {"_id" : "000000001", //Mongodb默认主键 "UID" : "000000001&quo ...
- MongoDB 内嵌文档
MongoDB是文档型的数据库系统,doc是MongoDB的数据单位,每个doc相当于关系型数据库的数据行(row),doc和row的区别在于field的原子性:row中的column是不和分割的原子 ...
- mongodb内嵌文档的查询
本文转自:http://blog.163.com/wm_at163/blog/static/1321734902012526103825481/ 1 > db.blog.findOne() { ...
- mongodb对数组元素及内嵌文档进行增删改查操作(转)
from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...
- MongoDB对数组元素及内嵌文档进行增删改查操作
比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: { "_id" : "195861", &qu ...
- mongoTemplate操作内嵌文档
关系型数据库中,表与表的关联关系有1:1,也有1:n的.在java的面向对象的世界里就是主对象嵌子对象,与主对象嵌集合<子对象>的两种形式. 主对象嵌子对象操作: 新增.修改都直接用如下方 ...
- 学习MongoDB 五: MongoDB查询(数组、内嵌文档)(二)
一.简介 我们上一篇介绍了db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段,我们今天介绍了对数组和内嵌文档的查询操作,尤其是 ...
- mongodb查询内嵌文档
mongodb查询内嵌文档 假设有这样一个文档: db.XXX.remove(); db.XXX.insert({"id":1, "members":[{& ...
- MongoDB查询或修改内嵌文档
作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用.文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded) ...
随机推荐
- Qt5窗口标题栏高度
1.frameGeometry().height() - geometry().height() 2. QRect desktopRect = QApplication::desktop()-> ...
- Java回顾之多线程
在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信,我们把线程同步的话题留到下一篇文章中. 线程是操作系统运 ...
- MySQL分页查询大数据量优化方法
方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N适应场景: 适用于数据量较少的情况(元组百/千级)原因/缺点: ...
- CSS 列表样式详解
CSS列表用于前端的列表排列. CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML中,有两种类型的列表: 无序列表 - 列 ...
- HDU 2276 矩阵快速幂
Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- 数论练习(6)——hdu A/B(逆元gcd)
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本
Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...
- css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的
<ul class="skin"> <li id="skin_0" title="蓝色" class="sele ...
- 重构 demo篇
本文背景为学习重构一书中的一些信息的记录. 该篇以一个影片租赁为背景.通过一层层的重构,最终实现相对来说比较完美的代码. 文中经典语句摘要: “如果它没有坏,就不要动它 .” 用来形容我们工作中一些比 ...
- php 双引号字符串里包变量的用法
第一种 $ary['a'] 去掉单引号$ary = array('a'=>1);$b = 5; $str = "fdsfdsf$ary[a]";$str = "fd ...