Mongo 找不到我的收藏

use*_*951 10 mongodb

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

它有一个名为 tablebusiness 的集合

如果我运行 mongo 我看到了

MongoDB shell version: 2.0.7
connecting to: test
>
Run Code Online (Sandbox Code Playgroud)

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

我试图执行

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

我试图执行

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

我做错了什么?

然后我做了

db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Run Code Online (Sandbox Code Playgroud)

什么都不显示。甚至没有添加索引。

那么怎么了?

Ada*_*m C 8

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

这只是 mongo shell 在连接时使用的默认数据库,除非你插入一些东西,否则它是空的。实际上,您可以对任何数据库执行此操作,test 只是默认设置。

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

最后,这个命令是正确的形式(以 db 为前缀):

db.isikota.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Run Code Online (Sandbox Code Playgroud)

但是,您没有更改数据库(使用use <database name>),或者至少您没有提到尝试至少。这将要做的是在测试数据库中名为“isikota.tablebusiness”的集合的“LatitudeLongitude”字段上创建一个二维(地理索引)索引(db 总是指您当前使用的数据库)。即使此集合不存在,也会创建索引(这只是对 system.indexes 命名空间的插入),因此命令会成功。您只是看不到其他任何东西,因为我相信您仍在对测试数据库进行操作。

假设您的数据实际上位于名为“isikota”的数据库中,而“tablebusiness”是您的集合,那么您实际上想要做的是:

use isikota;
db.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"});
Run Code Online (Sandbox Code Playgroud)

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