作者carlcarl (carl)
看板Python
标题Re: [问题] 不知道有没有人有在玩PyMongo的呢
时间Thu Oct 10 02:30:14 2013
※ 引述《AlexanderXXX ( )》之铭言:
: 当初一直想摸看看所谓的Non-SQL Database
: 就拿它来练习作case看看
: 只是现在碰到一个瓶颈
: 就是我想要建立一个有Primary Key的collection
: 也有在网路上看到 MongoDB有一个叫做"_id"的内建栏位可以拿来用
: 他确实也算是意义上的Primary Key
: 但是....
: 我自己在使用的时候 碰到的状况是
: 假设我已经insert了一组"_id"为1的set 比方说{ "_id": 1, "name": "Alex" } 这样好
: 了
: 但我接下来如果要再insert一组{ "_id": 1, "name": "Benny" }
: 这时我期待的反应应该是 insert会失败
: 但相反的 这笔inser却成功了 而且collection内原有的"Alex" 竟然被取代了XD...
: 这样的现象 好像又无法跟SQL的Primary Key有相同的运作方式 让我有点困扰
: 是说我当然可以在insert之前 先query看是否存在这个key
: 但这样的作法除了效能较差之外
: 感觉也没有完全杜绝同样key的资料汇被覆盖的问题
: 不知道有没有哪位大大也有玩过MongoDB的 可以讨论看看XD
我在 mongodb shell 里测
> db.test.insert({a:1})
> db.test.find()
{ "_id" : ObjectId("5255a01a5b9251448bf3826f"), "a" : 1 }
> db.test.insert({_id:1, a:1})
> db.test.find()
{ "_id" : ObjectId("5255a01a5b9251448bf3826f"), "a" : 1 }
{ "_id" : 1, "a" : 1 }
> db.test.insert({_id:1, a:2})
E11000 duplicate key error index: test.test.$_id_ dup key: { : 1.0 }
>
看来是有挡说@@a
--
http://blog.carlcarl.tw
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.189.31
1F:→ carlcarl:可能要讲一下你Pymongo是怎麽用的~~ 10/10 02:30
2F:推 jlhc:我觉得他可能用到save...不是用insert 10/10 18:10
3F:推 AlexanderXXX:噢 听楼上这麽一说...我还以为只是名字不一样orz.... 10/12 10:15
4F:→ AlexanderXXX:立马试试!!! 10/12 10:16
5F:推 AlexanderXXX:原来是我一直以来搞错了....感谢解惑!! 10/12 11:54