mongodb 的字段唯一设置

2017-05-27 09:45:06 +08:00
 linkbg

有这样一个需求:需要设置通过 3 个字段确定唯一。 比如:

adder:北京市海淀区 xx 小区 4 单元 #地址
tel:0103333333 #电话
t_id:1 # 标记数据的更新次数

这里除了 adder 不变,tel 和 t_id 都可能会变化。也就是说可能包含这样一些数据:

_id:213123123123
adder:北京市海淀区 xx 小区 4 单元 
tel:0103333333 
t_id:1 

_id:324243242123
adder:北京市海淀区 xx 小区 4 单元 
tel:010333435435 
t_id:1

_id:909809880808
adder:北京市海淀区 xx 小区 4 单元 
tel:010334536546 
t_id:1

_id:576876894643
adder:北京市海淀区 xx 小区 4 单元 
tel:010444444 
t_id:1

_id:89879879879
adder:北京市海淀区 xx 小区 4 单元 #地址
tel:0103333333 #电话
t_id:2

在我的思想中,NoSQL 貌似没有这个选项想 mysql 那样创建约束条件。然后看到有创建唯一索引,但是为上面的那种可以创建吗? 谢谢

7798 次点击
所在节点    MongoDB
8 条回复
hareandlion
2017-05-27 09:51:50 +08:00
用三个字段合并 hash 化之后的结果做_id 怎么样
wwqgtxx
2017-05-27 09:59:22 +08:00
联合唯一索引
Light3
2017-05-27 10:06:46 +08:00
我怎么记得好像设置下哪个字段唯一 然后这个字段值是这样的 就不会再插入成功呢
xiongbiao
2017-05-27 12:59:45 +08:00
可以
linkbg
2017-05-27 13:01:14 +08:00
@Light3 我也是这样想,所以来问问
fds
2017-05-27 15:08:30 +08:00
类似 db.collection("xxx").createIndexes([
{
key: { adder: 1, tel: 1, t_id: 1 },
background: true,
sparse: true,
unique: true,
},
])
fds
2017-06-01 13:42:38 +08:00
啊 对了 address 缩写是 addr 不是 er
linkbg
2017-06-01 14:07:21 +08:00
@fds 尴尬了。哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/364141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX