mongodb中对数组的操作命令
mongodb中对数组的操作命令有
$push、$ne、$addtoset、$pop、$pull
###addtoset会碰到的问题
addtoset解释: 往数组里面加入数据,如果数组里已经存在,则不会加入(避免重复) 。
以加一个加好友的操作为例子,当加好友时,除了好友ID, 还需要成为好友的时间戳时(addtime)。
{
"_id" : 100000,
"friedns" : [
{
"uid" : 100001,
"addtime" : NumberLong(1532676854771)
}
]
}
1
2
3
4
5
6
7
8
9
此时,更改一下addtime,再执行一次uid10001的addtoset
语句为:
db.friendship.update(
{"_id":100000}
,
{"$addToSet":{"friedns":{"uid":NumberInt(100001),"addtime":NumberLong(1532676854770)}}}
)
1
2
3
4
5
这时问题就来了:结果只是因为时间戳变了,又添加了一个相同的好友:
{
"_id" : 100000,
"friedns" : [
{
"uid" : 100001,
"addtime" : NumberLong(1532676854771)
},
{
"uid" : 100001,
"addtime" : NumberLong(1532676854770)
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
说明addtoset只能用在固定的数组对象中。
###使用ne+push解决问题
db.friendship.update(
{"_id":100000, "friedns.uid": {$ne: 100001}}
,
{"$push":{"friedns":{"uid":NumberInt(100001),"addtime":NumberLong(1532676854770)}}}
)
1
2
3
4
5
ne方案解释: 一个特定值不在数组里时就把它加进去,避免重复数据
这时只会对uid进行重复判断,问题解决。
————————————————
版权声明:本文为CSDN博主「iamfrankjie」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/iamfrankjie/article/details/81238619
mongodb中对数组的操作命令的更多相关文章
- 根据数组下标在MongoDB中修改数组元素
如下图这样的数据: 即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去. 如上图中第1个元素,修改 ...
- MongoDB学习总结(二) —— 基本操作命令(增删改查)
上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...
- MongoDB中的数据类型
mongoDB中存储的数据单元被称作文档.文档的格式与JSON很类似,只不过由于JSON表达的数据类型范围太小(null,boolean,numeric,string和object),mongoDB对 ...
- 浅析mongodb中group分组
这篇文章主要介绍了浅析mongodb中group分组的实现方法及示例,非常的简单实用,有需要的小伙伴可以参考下. group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定 ...
- 使用aggregate在MongoDB中查找重复的数据记录
我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...
- MongoDB中的group
在Mongodb的查询中,有类似于SQL中group by功能的group函数.两者的功能有些类似,但是区别也是比较明显的. 对于SQL来说,group by的作用就是安装依据列来将数据表中的记录分成 ...
- MongoDB实战指南(五):MongoDB中的聚集分析
聚集操作是对数据进行分析的有效手段.MongoDB主要提供了三种对数据进行分析计算的方式:管道模式聚集分析,MapReduce聚集分析,简单函数和命令的聚集分析. 1. 管道模式进行聚集 这里所说的管 ...
- 【转载】MongoDB中的MapReduce 高级操作介绍
转载自残缺的孤独 1.概述 MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,va ...
- mongodb中数据类型的坑
在mongodb中,我们给每个文档插入数据的时候,mongodb自动会为我们插入的数据创建数据类型.由于mongodb是一个非结构化的数据存储系统,因此在文档中你可以随意插入不同类型的字段,这和MyS ...
随机推荐
- Hive运行引擎Tez的安装
简介 Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input.Processor.Sort ...
- 2018/7/31-zznu-oj- 2128: 素数检测 -【费马小定理裸应用】
2128: 素数检测 时间限制: 1 Sec 内存限制: 128 MB提交: 84 解决: 32[提交] [状态] [讨论版] [命题人:admin] 题目描述 在算法竞赛中你会遇到各种各样的有关 ...
- bloomberg bulkFile解析
文章导航 bloomberg bulkfile解析 bloomberg bulkfile 在oracle的存储 准备工作: Bloomberg 提供了以下文件 1 . fields.csv 下载地址: ...
- java堆栈信息查看,以及JVM性能查看工具-jconsole+jmap
java-core P487 P515 chapter11,主要讲java的异常,里面很多内容收获良多,之前一直没注意过的. 一,Throwable类获得StackTraceElement ,可进行 ...
- 获取mysql一组数据中的第N大的值
create table tb(name varchar(10),val int,memo varchar(20)) insert into tb values('a', 2, 'a2') inser ...
- vue1 class style
- 9、组件注册-@Import-使用ImportSelector
9.组件注册-@Import-使用ImportSelector 9.1 @Import 源码: @Target(ElementType.TYPE) @Retention(RetentionPolicy ...
- Python 10.2
time 模块: strftime('%y%m%s',yesterday) ==>返回一个字符串代表的日期
- Oracle 物理结构(六) 文件-数据文件
Oracle 物理结构(六) 文件-数据文件
- 六十.完全分布式 、 节点管理 、 NFS网关
1.安装与部署 对mapred和yarn文件进行配置 验证访问Hadoop 在六十准备好的环境下给master (nn01)主机添加ResourceManager的角色,在node1,node2, ...