我的 mongodb 服务器有一个名为 villageContents 的数据库
它有一个名为 tablebusiness 的集合
如果我运行 mongo 我看到了
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"})
什么都没有出现。甚至没有添加索引。
那么有什么问题呢?
这只是 mongo shell 在连接时使用的默认数据库,除非你插入一些东西,否则它是空的。实际上,您可以对任何数据库执行此操作,测试只是默认设置。
第一个命令将不起作用,因为您没有在它前面加上 db,因此它试图将“isikota”作为变量 (javascript) 查找,但找不到它。同样,您的下一次尝试对不存在的“测试”变量执行相同的操作。
最后,这个命令是正确的形式(以 db 为前缀):
但是,您没有更改数据库(使用
use <database name>
),或者至少您没有提到至少尝试这样做。这将要做的是在测试数据库中名为“isikota.tablebusiness”的集合上的“纬度经度”字段上创建一个二维(地理索引)索引(db 总是指您当前使用的数据库)。即使此集合不存在,也会创建索引(这只是插入到 system.indexes 命名空间),因此命令成功。您只是不会看到任何其他内容,因为我相信您仍在测试数据库上进行操作。假设您的数据实际上位于名为“isikota”的数据库中,并且“tablebusiness”是您的集合,那么您真正想要做的是:
这将在名为“isikota”的数据库中名为“tablebusiness”的集合中的“LatitudeLongitude”字段上创建索引。