1

私はここ数日OPAにいますが、本当に好きになり始めています。私はコンピュータ サイエンスの最初の年に参加しており、翌年にはいくつかのデータベース クラスを作成します。データベースについて私が知っていることはほとんどありません。しかし、このタイプのデータベースは、私が見たものとは少し異なります。

OPA http://doc.opalang.org/manual/Hello--databaseのデータベースに関するガイドに従いましたが、質問があります。

このガイドでは、新しいデータベースを宣言します。

type user_status = {regular} or {premium} or {admin}
type user_id = int
type user = { user_id id, string name, int age, user_status status }
database users {
   user /all[{id}]
   /all[_]/status = { regular }
}

このデータベースの読み取り方法と、マップを使用してこのデータベースにクエリを実行する方法を学びましたが、新しい要素を追加するにはどうすればよいでしょうか? 私は少しテストしていました:

/users/all[{id:0}]/name<-getusername;

しかし、私が知っていることから、idは自動インクリメントでなければなりません。

みんな助けてくれてありがとう =D 私は本当に OPA に参加したいのですが、私が作った小さなものは本当に印象的です!

4

2 に答える 2

1

mongoDB と自動インクリメント

mongoDB (デフォルトの Opa データベース) では、スケーラビリティの理由から、(SQL のような) 自動インクリメントはありません。ただし、本当に必要な場合は、カウンターを使用してこの機能を自分で作成できます。

database users {
   user /all[{id}]
   int  /fresh_key
   /all[_]/status = { regular }
}

使用するたびにキーをインクリメントします。/users/fresh_key++

ランダムフレッシュキー

たとえば、次のような方法でランダムな ID を生成することもできます。Random.string(6) このスレッドを読んで、この手法の詳細を確認してください。

ユーザー定義の一意のキー

しかし、ユーザーを扱っている場合は、すでに一意のキーを持っている可能性があります。一意のキーとして「login」または「email」を使用するのはどうでしょうか?

于 2012-06-13T16:03:37.160 に答える
0

Date.in_milliseconds(Date.now_gmt())ユーザー ID と連結して、より一意の ID を使用することもできます。

于 2012-06-13T22:20:11.907 に答える