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


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.