我面临一个有趣的问题:无法从shell更新Mongo DB中的某些值。实际上这发生在其他一些Mongo DB上。在具有相同数据库架构的本地数据库上,相同的更新命令可以完美地运行。似乎在一些操作之后,db变为只读。 rs.status()
命令返回not running with --replSet
。 Mongo版本是' 2.4.9'。
我应该在哪里解决这个问题? 谢谢!
UPD。似乎这种事情只发生在一些集合上。 db中的其他集合工作正常
UPD2。我使用的更新cmd如下:db.userprofile.update({login: 'admin'}, {$set:{'filter.table.login':'a111'}})
。它根本不返回任何消息。但是在相同版本的另一个MongoDB上,它具有相同的模式,它可以解决问题并执行更新。
UPD3。命令db.getUsers()
返回给我:TypeError: Property 'getUsers' of object admin is not a function
无论我使用admin db还是我自己的db。
UPD4。我似乎找到了问题所在的地方。到目前为止,我发现我可以修改集合中的其他文档。所以我只在一两个文件中遇到问题。其中一个文档看起来像这样(一个片段):
"filter" : {
"" : {
"domain" : null,
"type" : null
},
"table1" : {
"pageNumber" : 1,
"page1" : 10
},
"table2" : {
"domain" : null,
"login" : "",
"page1" : 1,
"page2" : 10
},
由于某些原因,空值("")被保存为键。我假设这个空值可能是这种错误的根源。但是为什么Mongo司机在插入过程中并没有抱怨这种情况?