몽고가 내 컬렉션을 찾을 수 없습니다


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"})

아무것도 나타나지 않습니다. 인덱스도 추가되지 않습니다.

무슨 일이야?

답변:


8

"테스트"가 무엇인지 궁금합니다. test라는 데이터베이스가 없습니다.

이것은 몽고 쉘이 연결할 때 사용하는 기본 데이터베이스이며, 삽입하지 않으면 비어 있습니다. 실제로 모든 데이터베이스 에서이 작업을 수행 할 수 있습니다. 테스트는 기본값입니다.

첫 번째 명령은 db로 접두사를 지정하지 않았으므로 "isikota"를 변수 (자바 스크립트)로 찾으려고 찾지 못하므로 작동하지 않습니다. 마찬가지로 다음 시도는 존재하지 않는 "test"변수와 동일하게 수행됩니다.

마지막으로이 명령은 올바른 형식 (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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.