最近学习monogdb,在用update是,发现在一个问题。
按官方文档上的信息,$addToSet and $each是往一个数组里插入每个记录,并保证元素唯一。
如:
> db.search_loggers.update({user_id : 2}, {$addToSet : {words : {$each : [ 1, 2, 1, 2, 1]}}}, true)
查看结果:
> db.search_loggers.find()
{ "_id" : ObjectId("4f90be7a09ee78ef9db6e01c"), "user_id" : 2, "words" : [ 1, 2 ] }
再来个English的:
> db.search_loggers.update({user_id : 2}, {$addToSet : {words : {$each : [ "me", "me"]}}}, true)
查看结果:
> db.search_loggers.find()
{ "_id" : ObjectId("4f90be7a09ee78ef9db6e01c"), "user_id" : 2, "words" : [ 1, 2, "me" ] }
上面都没问题,来个中文的:
> db.search_loggers.update({user_id : 2}, {$addToSet : {words : {$each : [ "他", "他", "他" ]}}}, true)
查看结果:
> db.search_loggers.find()
{ "_id" : ObjectId("4f90be7a09ee78ef9db6e01c"), "user_id" : 2, "words" : [1, 2, "me", "他" ] }
还是没问题,但如果先插入中文:
> db.search_loggers.update({user_id : 3}, {$addToSet : {words : {$each : [ "他", "他", "他", 1, 2, 3, "me", "me"]}}}, true)
查看结果:
> db.search_loggers.find()
{ "_id" : ObjectId("4f90c47609ee78ef9db6e01d"), "user_id" : 3, "words" : [ "他", "他", "他", 1, 2, 3, "me", "me" ] }
悲剧了,没有进行深入的学习,但觉得这是个bug,如有了解的,给解释一下,感激不尽!
分享到:
相关推荐
在MongoDB中,查询数据时,我们可能会遇到需要根据数据类型进行筛选的情况,这时就用到了$type操作符。$type操作符允许我们基于BSON(Binary JSON)类型来查询文档中的字段,确保返回的结果符合特定的数据类型。 ...
### Spring Data MongoDB中文文档知识点概览 #### 一、Spring Data MongoDB概述 - **Spring Data MongoDB** 是 **Spring Data** 家族的一员,它提供了一种简单的方式来与 MongoDB 数据库进行交互。通过 Spring Data...
在学习过程中,通过阅读中文文档和运行示例,可以加深对MongoDB的理解,掌握其基本操作和高级特性。对于初学者,建议从安装开始,逐步学习数据插入、查询、更新和删除,然后探索索引、聚合、事务等进阶主题。随着对...
**Spring MongoDB 中文文档** MongoDB 是一个高性能、开源、无模式的分布式文档数据库,而Spring Data MongoDB 是Spring 框架的一部分,它为MongoDB 提供了强大的支持,简化了与MongoDB 的集成和操作。这篇文档将...
- **系统需求**:首先确保你的操作系统支持MongoDB。对于Windows、Linux或macOS,MongoDB均有官方发行版。 - **下载与安装**:访问MongoDB官网下载适合你操作系统的版本,并按照官方指南完成安装过程。 ##### 2. ...
该程序包包含用于处理MongoDB的$jsonSchema验证消息的助手(或任何您称呼的助手)。 截止到今天( 2020-03-10 ),当文档无法插入或更新时,它不支持适当的错误消息。 此问题将通过解决。 但是,如果一切顺利,它...
在MongoDB中,`db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)`命令用于对特定集合执行一系列聚合管道操作。每个操作(pipe)通常接收上一步的输出作为输入,并产生新的输出,直到最后一个操作返回最终结果。 ...
MongoDB中文手册是开发者必备的参考资料,它详细介绍了MongoDB的各种操作和语法用法,帮助用户深入理解并有效利用这个强大的数据库系统。 手册首先会介绍MongoDB的基本概念,包括文档(Documents)、集合...
8. **多语言支持**:NoSQLBooster界面支持多种语言,包括中文,使得非英语国家的用户也能无障碍地使用。 9. **实时统计**:实时监控MongoDB服务器的性能指标,如内存使用、CPU占用、网络流量等,帮助用户及时发现和...
`$addToSet` 修改器用于数组类型的键值对,例如 `{ $addToSet : { books: "JS" } }`。 RunCommand 函数和 FindAndModify 函数 `runCommand` 函数可以执行 MongoDB 中的特殊函数,例如 `findAndModify` 函数用于...
MongoDB 3.6 中文文档
使用`$addToSet`可向已有数组中添加元素,确保元素不重复。 10. 删除操作: `remove`方法用于删除满足条件的文档,例如删除所有专业为“通信工程”的学生。 11. MapReduce: MapReduce是一种处理和生成大数据集...
MongoDB: The Definitive Guide by Kristina Chodorow and Michael Dirolf Copyright © 2010 Kristina Chodorow and Michael Dirolf. All rights reserved.
总之,NoSQL Manager for MongoDB中文版是MongoDB管理员和开发者的得力助手,它以用户友好的界面和全面的功能,降低了MongoDB的管理和使用难度,提高了工作效率。无论是在日常开发、数据维护还是学习研究中,都是一...
因为MongoDB的文档有数组字段,所以可以简单的将计算总和分成两种: 1,统计符合条件的所有文档的某个字段的总和; 2,统计每个文档的数组字段里面的各个数据值的和。这两种情况都可以通过$sum表达式来完成。 以上两...
MongoDB的多表关联查询是数据库操作中的重要环节,尤其是在处理复杂数据关联时显得尤为重要。在NoSQL数据库中,由于缺乏传统SQL的JOIN操作,关联查询通常更为复杂。MongoDB引入了聚合框架,其中的$lookup操作符解决...
常用的聚合函数包括$sum(求和)、$avg(平均值)、$min(最小值)、$max(最大值)、$push(把分组的值添加到数组中)、$addToSet(添加到数组中但去除重复值)、$first和$last(获取排序后的第一个和最后一个文档...