0

以前の構造は次のとおりです。

City collection with documents like: {_id, name, buildings:[ _ids from Building collection ]}
Building collection with documents like: {_id, name}

そして次のようになりました:

City collection with documents like: {_id, name, buildings:[ {_id, name}, {_id, name}...]}

今、私の問題は次のとおりです。「建物」sufieldの建物jsonの_idはmongodbによって生成されていましたが、それをそれぞれの都市文書の「建物」配列に挿入しました。

しかし今、建物を作成するときは、それを配列に直接挿入します。しかし、私はまだクライアント側で個々の建物ごとにある種の識別を必要としていますが、それを正確に行う方法に困惑しています.

建物を挿入するたびに増加する数値を都市ドキュメントに保持し、そのIDを与えることを考えていました。このようにして、その特定の都市に固有のものになります。したがって、デフォルトの建物が 1 つあるすべての都市には、ID 0 の建物があります。

これに対するよりスマートでエレガントなソリューションはありますか?

PS: 個々の建物にも簡単にアクセスできるようにしたいのですが、キーが ID である連想配列/オブジェクトとしてそれらを保持する必要があると思いますか?

4

1 に答える 1

0

建物を挿入するたびに増加する数値を都市ドキュメントに保持し、そのIDを与えることを考えていました。

これはあまり良い考えではありません。つまり、すべての更新について、これについても読む必要があるということです。ObjectID 値を作成することにより、MongoDB が行ったのと同じメカニズムで _id 値を割り当てるのが最善です。実際、これらの ID を生成するのはドライバーであり、MongoDB 自体ではありません。

http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.htmlのドキュメントには、その方法が示されています。

var objectId = new ObjectID();

次に、建物のサブドキュメントの名前の横にこの値を追加します。

于 2013-07-24T14:27:41.683 に答える