V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
guguai
V2EX  ›  MongoDB

$addToSet $each 操作,当数组中有中文时,会插入重复数据,这个是为什么?

  •  
  •   guguai · 2015-05-19 17:31:43 +08:00 · 4157 次点击
    这是一个创建于 3477 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://suchj.iteye.com/blog/1491023
    今天也遇到这个问题了,上网搜了搜也没有找到解决方法,所以到这里问问。
    1 条回复    2015-05-19 18:28:04 +08:00
    karloku
        1
    karloku  
       2015-05-19 18:28:04 +08:00   ❤️ 1
    > db.testbed.update({"_id":ObjectId("555b0d58806a1600d242c861")}, {$set: {"name" : []}});
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.testbed.find(ObjectId("555b0d58806a1600d242c861"));
    { "_id" : ObjectId("555b0d58806a1600d242c861"), "name" : [ ] }
    > db.testbed.update({"_id": ObjectId("555b0d58806a1600d242c861")}, {$addToSet: {"name" : {$each : [ "他", "他", "他", 1, 2, 3, "me", "me"]}}}, true)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.testbed.find(ObjectId("555b0d58806a1600d242c861"));
    { "_id" : ObjectId("555b0d58806a1600d242c861"), "name" : [ "他", 1, 2, 3, "me" ] }
    > db.testbed.update({"_id": ObjectId("555b0d58806a1600d242c861")}, {$addToSet: {"name2" : {$each : [ "他", "他", "他", 1, 2, 3, "me", "me"]}}}, true)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.testbed.find(ObjectId("555b0d58806a1600d242c861"));
    { "_id" : ObjectId("555b0d58806a1600d242c861"), "name" : [ "他", 1, 2, 3, "me" ], "name2" : [ "他", 1, 2, 3, "me" ] }

    tested mongodb-3.0.3


    可能是以前版本的bug. 印象里以前还有过$addToSet w/ $each到一个事先不存在的field时会出现重复.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1344 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.