私はこれが古い質問ですけど、私は後世のために私の答えを掲示しなければならない...
それはSYに依存あなたが構築しているステムとその特定のビジネスルール
私は、MongoDb、C#(バックエンドAPI)、および角度(フロントエンドWebアプリケーション)で中規模から大規模なCRMを構築していますが、特定のエンティティを選択するために角度ルーティングでは非常に恐ろしいObjectIdが見つかりました。 APIコントローラのルーティングと同じです。
上記の提案は、私のプロジェクトでは完璧に機能しました。
db.contacts.insert({
"id":db.contacts.find().Count()+1,
"name":"John Doe",
"emails":[
"[email protected]",
"[email protected]"
],
"phone":"555111322",
"status":"Active"
});
それは私の場合に最適です理由はなく、すべてのケースでは、コレクションから3つのレコードを削除する場合は、上記のコメントの状態として、あなたが衝突を取得することです。
私のビジネスルールでは、当社の社内SLAのために、私が書いているアプリケーションの潜在的寿命より長い間、連絡文書データやクライアントレコードを削除することは許可されていないと述べています。 enum "Status"は "Active"または "Deleted"のいずれかです。 UIから何かを削除することができますが、「連絡先は削除されました」と表示されますが、すべてのアプリケーションが完了したことは連絡先のステータスを「削除済み」に変更することです。データをクライアントアプリケーションにプッシュする前に削除されたレコードを削除します。
したがって、db.collection.find()。1 +)(カウントそれは皆のため動作しません...
私のための完璧なソリューションですが、データを削除しない場合、それ正常に動作します。
私はあなたのような同じ問題を、ビットセットの位置を設定するIDを生成する方法を満たしています。あなたはこの問題を解決しましたか? – brucenan