Mongo找不到我的收藏


10

我的mongodb服务器有一个名为villageContents的数据库

它有一个名为tablebusiness的集合

如果我跑蒙哥,我看到了

MongoDB shell version: 2.0.7
connecting to: test
>

我想知道什么是“测试”。那里没有名为test的数据库。

我试图执行

> villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:28:28 ReferenceError:is not defined (shell):1
>

我试图执行

> test.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:29:13 ReferenceError: test is not defined (shell):1
>

我做错了什么?

然后我做了

db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

什么都没有出现。甚至没有添加索引。

那怎么了

Answers:


8

我想知道什么是“测试”。那里没有名为test的数据库。

这只是mongo shell连接时使用的默认数据库,除非您插入某些内容,否则它为空。实际上,您可以对任何数据库执行此操作,测试只是默认设置。

第一个命令将不起作用,因为您没有为它添加db前缀,因此它会尝试将“ isikota”作为变量(javascript)查找,但无法找到它。同样,您下一次尝试对不存在的“测试”变量执行相同的操作。

最后,此命令是正确的格式(以db开头):

db.isikota.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

但是,您没有更改数据库(使用use <database name>),或者至少没有提及尝试这样做。这是要在测试数据库中的名为“ isikota.tablebusiness”的集合的“ LatitudeLongitude”字段上创建2d(地理索引)索引(db始终引用您当前正在使用的数据库)。即使不存在此集合,也将创建索引(这只是对system.indexes命名空间的插入),因此命令将成功执行。您什么也看不到,因为我相信您仍在测试数据库上进行操作。

假设您的数据实际上在一个名为“ isikota”的数据库中,并且“ tablebusiness”是您的集合,那么您实际要做的是:

use isikota;
db.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"});

这将在名为“ isikota”的数据库中的名为“ tablebusiness”的集合中的“ LatitudeLongitude”字段上创建索引。


确实有一个名为test的数据库。我没看到
user4951 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.