最近学习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,如有了解的,给解释一下,感激不尽!