作者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
→ carlcarl:可能要講一下你Pymongo是怎麼用的~~ 10/10 02:30
推 jlhc:我覺得他可能用到save...不是用insert 10/10 18:10
推 AlexanderXXX:噢 聽樓上這麼一說...我還以為只是名字不一樣orz.... 10/12 10:15
→ AlexanderXXX:立馬試試!!! 10/12 10:16
推 AlexanderXXX:原來是我一直以來搞錯了....感謝解惑!! 10/12 11:54