`
suchj
  • 浏览: 146193 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MongoDB中的$addToSet and $each对中文支持

    博客分类:
  • sql
阅读更多

最近学习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,如有了解的,给解释一下,感激不尽!
分享到:
评论
1 楼 cwsdnsdws 2016-06-26  
我试验了一下,针对中文也是可以实现元素唯一的啊,难道是数据库版本不同导致实验结果不同?我使用的时3.2.7版本的Mongodb

相关推荐

Global site tag (gtag.js) - Google Analytics