我遇到的问题是document
collection
计数略有不稳定。
以下是我的工作流程:
首先使用scrapy
进行抓取。已删除的项目通过pipeline
发送,并准备使用collection
库写入pymongo
。
接下来,检查项目当前是否存在(使用密钥),如果是,则继承_id
并使用db.collection.save()
来实现upsert
。进行检查以确保在写入之前存在所有fields
。
如果该项目不存在,则会在document
中创建新的collection
。
最后,前端PHP
网页允许用户使用documents
在collection
中搜索PHP mongoDB driver
。
问题
我开始在网页上注意到一些新文档会出现在一次抓取中,然后突然从视图中消失,然后在下一次抓取后再次神秘地出现。所以我进入mongo shell
并发现如果重复发送,特定查询将返回波动的结果数。类似于一个然后下降两个然后回到稳定数字的东西。
我不能得到的是,代码中的任何一点都不会remove()
来自documents
的任何collection
。我的印象是db.collection.save()
只会导致集合中的文档数量相等或越来越多。
是否存在某种形式的阻止,无法查询正在编写的文档?或者它与我的爬行间隔有关?
备注:
查询的代码段:
$cursor = $collection->find(array( '$or' => array(
array('post_content' => new MongoRegex("/$safe/i")),
array('post_user' => new MongoRegex("/^$safe$/i"))
)));
$cursor->sort(array('post_datetime' => -1));