2013-03-11 20 views
1

all!mongo shell无法使用,但从我的程序访问是可以的,在OSX上卸载/新安装

在卸载当前稳定(使用brew)和安装2.4 rc2(不是brew,因为brew --devel没有它,但主要如此处所述:http://shiftcommathree.com/articles/how-to-install-mongodb-on-os-x),甚至几次,也许是太渴望在下次安装之前删除与mongodb相关的所有内容,我已经结束了这种情况:

我使用数据库并且工作正常(查找,插入等)的节点程序。但问题是mongo shell无法正常工作,我无法插入或查找文档。例如(我现在有2.4 RC2,但情况与当前稳定不变):

 
$ mongo 
MongoDB shell version: 2.4.0-rc2 
connecting to: test 
> show dbs 
local 0.078125GB 
> use mydb 
switched to db mydb 
> db.mydb.mycollection.insert = ({title: "O-oh, strange problem"}) 
{ "title" : "O-oh, strange problem" } 
> show collections 
> show dbs 
local 0.078125GB 
mydb (empty) 

话,我通过我的节点程序插入和做到这一点:

 
> show dbs 
local 0.078125GB 
mydb 0.203125GB 
> use mydb 
switched to db mydb 
> show collections 
mycollection 
system.indexes 
> db.mydb.mycollection.find() 
> 

再次,在我的节点程序中,'查找'找到它应该...

任何想法为什么mongo shell不起作用?

弗罗德

+0

'insert =?'那是什么语法?这是你应该打电话的功能。你为什么要'使用mydb',然后'db.mydb'.xyz?用途切换到该数据库。你的意思是在名为mydb的数据库中有一个名为'mydb'的集合吗? – WiredPrairie 2013-03-11 17:56:36

+0

“=”错了!查看对亚当斯答案的评论。我使用“使用mydb”,然后在该数据库的(新)集合中插入一个插入,如db.mydb.mycollection.insert(...),如http://docs.mongodb.org/manual/tutorial /正在开始/ – frodefi 2013-03-12 00:45:01

+0

请编辑您的问题并显示您的节点代码。试图理解你的“控制台”风格输出真的很混乱。你在'mydb'数据库中有一个名为'mydb.mycollection'的集合。我很怀疑这真的是你想要的。 – WiredPrairie 2013-03-12 01:08:51

回答

1

你已经有了一个在mydb数据库称为mydb.mycollection集合。这不太可能是你想要的。当您从外壳获取数据库时,您可以通过db对象引用数据库,而不必重复数据库名称。

use mydb 
# db is now implicitly the mydb database 
# you no longer refer to it by name 
db.mycollection.insert({"name" : "stacks overflowing"}) 

另外请注意,你不调用insert功能,你的代码试图在功能设置为新对象的值。

相关问题