Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb插入失败_Mongodb_Mongodb .net Driver - Fatal编程技术网

mongodb插入失败

mongodb插入失败,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我正在windows平台上使用MongoDB2.6.1版,64位,16GB内存(并使用C#MongoDB驱动程序)。 在我的环境中,我每10秒插入约15个文档(每个文档最多128B)。每个插入操作都会插入一个文档,目前在我的(单个)收藏中,我获得了621000个文档。 最近,我注意到所有插页上都有几分钟的“洞”。当我说“洞”时,我的意思是在相同的时间范围内没有插入任何文档 为了调试,我在每次插入后都打印了WriteConcernResult,令人惊讶的是,查询中丢失的所有插入文档都成功插入: W

我正在windows平台上使用
MongoDB
2.6.1版,64位,16GB内存(并使用C#MongoDB驱动程序)。
在我的环境中,我每10秒插入约15个文档(每个文档最多128B)。每个插入操作都会插入一个文档,目前在我的(单个)收藏中,我获得了621000个文档。
最近,我注意到所有插页上都有几分钟的“洞”。当我说“洞”时,我的意思是在相同的时间范围内没有插入任何文档

为了调试,我在每次插入后都打印了
WriteConcernResult
,令人惊讶的是,查询中丢失的所有插入文档都成功插入:

WriteConcertResult: writeResult.Ok - True, writeResult.HasLastErrorMessage - False, writeResult.LastErrorMessage - , writeResult.ErrorMessage - , writeResult.Response - { "connectionId" : 57, "n" : 0, "syncMillis" : 0, "writtenTo" : null, "err" : null, "ok" : 1.0 }
为了确保失败时出现异常,我插入了同一文档两次。
现在它只是让事情变得更有趣,因为我确实得到了“复制密钥错误”,但仍然找不到该文档。
为了确保我没有“查询”问题,我检查了当我发现“行为中的漏洞”时是否有文档被添加到集合中,我发现没有添加任何文档(即使write concern结果显示Ok)

然后我转向mongo日志(我以-vvv开头),没有发现任何可疑的东西:

2014-07-07T19:34:01.393+0300 [journal] journal REMAPPRIVATEVIEW
2014-07-07T19:34:01.393+0300 [journal] journal REMAPPRIVATEVIEW done startedAt: 5 n:4 0ms
2014-07-07T19:34:01.393+0300 [journal] groupCommit end
2014-07-07T19:34:02.219+0300 [conn8] PageFaultException thrown
2014-07-07T19:34:02.219+0300 [conn8] insert myDb.files ninserted:1 keyUpdates:0 numYields:0 locks(micros) w:120 0ms
2014-07-07T19:34:02.219+0300 [conn8] run command myDb.$cmd { getlasterror: 1 }
2014-07-07T19:34:02.219+0300 [conn8] command myDb.$cmd command: getLastError { getlasterror: 1 } ntoreturn:1 keyUpdates:0 numYields:0  reslen:94 0ms
2014-07-07T19:34:02.219+0300 [conn8] run command myDb.$cmd { findAndModify: "reposInfo", query: { RepositorySizeInBytes: { $exists: true } }, update: { $inc: { RepositorySizeInBytes: 1018460 } }, new: true }
2014-07-07T19:34:02.219+0300 [conn8] Only one plan is available; it will be run but will not be cached. query: { RepositorySizeInBytes: { $exists: true } } sort: {} projection: {}, planSummary: COLLSCAN
2014-07-07T19:34:02.219+0300 [conn8] processing update :  query: { _id: ObjectId('538760d681536a0414a23bc9') } updated: { $inc: { RepositorySizeInBytes: 1018460 } } god: 0 upsert: 0 multi: 0 callLogOp: 1 fromMigration: 0 fromReplications: 0
2014-07-07T19:34:02.219+0300 [conn8] Using idhack: { _id: ObjectId('538760d681536a0414a23bc9') }
2014-07-07T19:34:02.219+0300 [conn8] update validate options --  updatedFields: Fields:[ RepositorySizeInBytes,] immutableAndSingleValueFields.size:0 fromRepl: 0 validate:1
2014-07-07T19:34:02.219+0300 [conn8] UpdateResult --  upserted: {} modifiers: 1 existing: 1 numDocsModified: 1 numMatched: 1
2014-07-07T19:34:02.219+0300 [conn8] update result:  upserted: {} modifiers: 1 existing: 1 numDocsModified: 1 numMatched: 1
2014-07-07T19:34:02.219+0300 [conn8] using modified query to return the new doc: { _id: ObjectId('538760d681536a0414a23bc9') }
2014-07-07T19:34:02.219+0300 [conn8] Using idhack: query: { _id: ObjectId('538760d681536a0414a23bc9') } sort: {} projection: {}
2014-07-07T19:34:02.219+0300 [conn8] command myDb.$cmd command: findAndModify { findAndModify: "reposInfo", query: { RepositorySizeInBytes: { $exists: true } }, update: { $inc: { RepositorySizeInBytes: 1018460 } }, new: true } update: { $inc: { RepositorySizeInBytes: 1018460 } } ntoreturn:1 nscanned:1 nscannedObjects:1 nMatched:1 nModified:1 fastmod:1 keyUpdates:0 numYields:0 locks(micros) w:215 reslen:144 0ms
我不确定“PageFaultException抛出”部分是否与问题有关,但在阅读了有关此异常的内容后,我明白这可能是正常的,然后在插入真正成功之前,我也看到了此异常,因此我继续讨论

尽管write concern结果告诉我一切正常,但我仍然检查了
serverStatus
currentOp
是否有可能的锁定操作,但没有发现任何奇怪的地方

以及如何更好地调试这种情况的建议?
无聊信息:
-mongodb实例是使用
新建MongoClient(addr)
客户端.GetServer()
服务器.GetDatabase(dbName)
创建的(因此默认情况下启用了写问题)。
-该集合是完全标准的(不是封顶集合,不是分片集合,没有副本集)
-用于插入文档的id是
BinData

-mongo进程占用(根据Task Manager)38148k RAM,只有20%的服务器RAM在使用中。
-mongo版本已更新,为64位

--更新--

当我通过BinData\u id搜索文档时,我可以(以某种方式)获得它,但它以任何其他方式都是不可见的。
例如,当我搜索此项时:
db.files.find({“\u id”:BinData(0,“alnYNFB8XxGo+KB8A70vCw==”)}

我得到(第一个对象):

但当我按“sT”搜索时,我什么也找不到(当我按“sT”搜索我在收藏中看到的文档时,我可以找到它们)。
什么爸爸

--更新(根据ASIA的评论)--
按“sT”示例搜索“良好”文档:

>> goodDate = ISODate("2014-07-08T06:55:59.056Z");
>> db.files.find({"sT": goodDate})
我收到退回的文件。那么我会:

>> missDate = ISODate("2014-07-08T06:53:20.534Z")
>> db.files.find({"sT": missDate})
什么也找不到

另一个例子:

>> db.files.find({"sT": {$gte: missDate}})
第一个结果以“sT”开头:
ISODate(“2014-07-08T06:55:41.446Z”)

正如我之前所说,在日志告诉我插入成功后,我正在检查
db.files.find().length()
,结果是一样的。
我甚至在find()上做了一个for循环,搜索了丢失的文档id,但仍然找不到它

--更新--
经过一些测试(感谢mongo论坛),我们决定将此问题列为一张罚单。

于是在mongo研发社区张贴了一张罚单。当我们确定发生了什么情况时,我将继续并在此处更新。

请显示您对不返回任何文档的“sT”值的搜索。这是一个独立的mongod-无复制,无分片吗?有什么>>提示?您是在mongo shell中还是使用其中一个驱动程序?正如我在问题中所说的,没有复制,没有切分,只是独立的。事实上,我从shellit运行它看起来这个问题是一个更深层次的问题,所以我在mongo论坛上继续这个帖子,并在这里更新发现。
>> db.files.find({"sT": {$gte: missDate}})