est*_*est 21 uniqueidentifier auto-increment bitarray bitset mongodb
我正在建立一个分析系统,API调用将提供唯一的用户ID,但它不是按顺序而且太稀疏.
我需要为每个唯一用户ID提供一个自动增量ID,以在bitarray/bitset中标记分析数据点.因此,第一个用户遇到的对应于比特阵列的第一个比特,第二个用户将是比特阵列中的第二个比特,等等.
那么在MongoDB中生成增量唯一用户ID有一种可靠而快速的方法吗?
Kon*_*uda 14
mongo中的每个对象都有一个id,它们按插入顺序排序.获取用户对象的集合,迭代它并将其用作递增的ID有什么问题?呃完全去那种地图减少工作
我知道这是一个古老的问题,但我会为后人发布我的答案......
这取决于您正在构建的系统以及适当的特定业务规则.
我正在MongoDb,C#(Backend API)和Angular(前端Web应用程序)中构建中到大规模的CRM,并发现ObjectId在Angular Routing中用于选择特定实体非常糟糕.与API控制器路由相同.
上面的建议对我的项目非常有效.
db.contacts.insert({
"id":db.contacts.find().Count()+1,
"name":"John Doe",
"emails":[
"john@doe.com",
"john.doe@business.com"
],
"phone":"555111322",
"status":"Active"
});
Run Code Online (Sandbox Code Playgroud)
它适用于我的情况,但不是所有情况的原因是,正如上面的注释所述,如果从集合中删除3条记录,则会发生冲突.
我的业务规则规定,由于我们内部的SLA,我们不允许删除通信数据或客户记录超过我正在编写的应用程序的潜在生命周期,因此,我只是用枚举"状态"标记记录这是"活动"或"已删除".你可以从用户界面中删除一些内容,它会说"联系人已被删除",但所有应用程序都已将联系人的状态更改为"已删除",当应用程序调用存储库获取联系人列表时,我会过滤在将数据推送到客户端应用程序之前删除记录.
因此,db.collection.find().count()+ 1对我来说是一个完美的解决方案......
它不适用于所有人,但如果您不删除数据,它可以正常工作.
| 归档时间: |
|
| 查看次数: |
94736 次 |
| 最近记录: |