1
kxxoling 2016-06-15 13:06:40 +08:00 1
你要的是 `db.collections.yourCollection.find({from_url: {$eq: url}})`?
|
2
gzlock 2016-06-15 13:07:34 +08:00 via Android
gg 搜 MongoDB exists 有很多结果
|
3
Neagle OP @gzlock 谢谢我使用 infos = db.test.find({"url":{"$exists":True}}) 只能找到存在 url 字段的文档,我想要的是 每个 url 字段里面 value 值是否已经存在了,谢谢。 难道要把 url 字段存在的文档全部返回 在到程序里面去判断?
|
5
doublleft 2016-06-15 14:52:22 +08:00 1
其实仔细想一下,考虑这个问题有两个点:
1.原子性 2.单次查询次数 如果按照你说的方式:先查询这个是否存在,然后在写入。显然以上 2 个问题都是不满足的。 哦……我是这样实现的,表里加一个 hash 字段,存除了 id 之外所有的值的 crc32 值,做唯一索引。 这样每次新增的时候就直接写就好了:如果存在肯定会写失败,不存在一次写入,而且满足原子性。 |
6
Neagle OP @doublleft 感谢回复,的确是这两个问题, mongodb 没有更简单的办法? 或者说我就把 from_url 作唯一索引,用的时候直接写? 如果存在,就写失败,如果不存在则一次性写入?
|
8
Neagle OP @doublleft 谢谢,您的意思是 我把 url 字段 哈希后存入,做唯一索引,然后写的时候直接写,存在则失败,不存在则写入?
|
9
onion83 2016-06-20 15:02:52 +08:00
可以研究下 findAndModify
|