技术:
- MongoDB 3.0.8 (MMAPv1),未分片,托管在AWS上的专用集群通过mLab(主、备、仲裁者),3.7GB RAM
- MongoDB C#驱动程序版本为2.3
- 连接字符串:
mongodb://USER:PASS@MYMONGO1.com:1234,MYMONGO2.com:1234/DB_NAME?replicaSet=REPLICA_SET_NAME
假设
- 我有一个名为Products的集合,其中有一个字段叫做Package。
- 存在索引:“Package”:1
- 从该集合中不会删除对象。
- 字段包不会被更新。
- 不时地插入新对象。
每天一次,我在此集合上记录特定计数(每次都是相同的参数):
db.Products({"Package": "Box"}).count()
// actual code running in C#:
productsCollection.Find(p => p.Package == "Box").Count()
我期望每天的结果都相同或更大。 但有时候会得到一个更小的值。第二天就又变正确了。在两个不同的环境中也出现了这个问题。
例如:
- 第1天:4,563,135
- 第2天:4,563,135
- 第3天:4,563,124(比预期少11)
- 第4天:4,563,135
我尝试通过C#和直接针对Mongo手动复现它,但失败了(值始终是正确的)。
到底发生了什么?