![]() | 1 kxxoling 2016-06-15 13:06:40 +08:00 ![]() 你要的是 `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.原子性 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 |