[MONGODB] DBRef와 MongoDB를를 조회하는 방법
MONGODBDBRef와 MongoDB를를 조회하는 방법
나는 다음과 같은 데이터 구조를 가지고 가정 :
var user = {_id: 'foo', age: 35};
var post = {_id: '...', author: {$ref: user, $id: 'foo'},...};
어떻게 모든 게시물되는 참조 사용자 [foo는]을 조회 할 수 있습니다? 나는 다음과 같은 있지만 작업을 시도했다 :
db.post.find('author._id': 'foo');
var u = db.user.find({_id: 'foo'});
db.post.find('author': u);
나도 공식 문서에서 답을 찾을 수없고 구글 수 있습니다!
사람은 어떤 생각을 가지고?
해결법
-
==============================
1.알았다:
알았다:
db.post.find({'author.$id': 'foo'})
-
==============================
2.당신은. $ 아이디 참조를 사용할 수 있지만 해당 필드에 어떤 인덱스를 무시합니다. 난 당신이 단자를 통해 직접 쿼리 또는 빠르게 뭔가를보고 싶어하지 않는 그 방법을 무시하고 건의 할 것입니다. 큰 컬렉션을 사용하는 당신은 인덱스에 필드를 원하고이 법 아래를 사용하여 쿼리합니다.
당신은. $ 아이디 참조를 사용할 수 있지만 해당 필드에 어떤 인덱스를 무시합니다. 난 당신이 단자를 통해 직접 쿼리 또는 빠르게 뭔가를보고 싶어하지 않는 그 방법을 무시하고 건의 할 것입니다. 큰 컬렉션을 사용하는 당신은 인덱스에 필드를 원하고이 법 아래를 사용하여 쿼리합니다.
당신은 다음을 사용하여 인덱스 쿼리를 사용하려면 :
db.post.find('author' : { "$ref" : 'user', "$id" : 'foo' , "$db" :'database_name' })
foo는 객체 ID가있는 경우
db.post.find('author' : { "$ref" : 'user', "$id" : ObjectId('foo') , "$db" :'database_name' })
다음과 같은 방법으로 저자에 인덱스를 만들 수 있습니다
db.post.ensureIndex( {'author' : 1 } );
-
==============================
3.( '. 저자 $ 아이디': '푸')이 db.post.find이 빠져는 {}, 올바른 문장은 그래서 :
( '. 저자 $ 아이디': '푸')이 db.post.find이 빠져는 {}, 올바른 문장은 그래서 :
db.post.find({'author.$id': 'foo'})
또한이는 달성 될 수있다 :
db.post.find({'author': DBRef("user", ObjectId('foo'))})
그러나 첫 번째 방법보다 컴팩트하고 실용적입니다.
-
==============================
4.당신이 mongojack는 정말 쉽게 사용하는 경우 다음이에 자바 솔루션을 찾고있는 사람들을위한 :
당신이 mongojack는 정말 쉽게 사용하는 경우 다음이에 자바 솔루션을 찾고있는 사람들을위한 :
collection.find(DBQuery.is("user", new DBRef(user.getId(), User.class)));
어디 모음은 JacksonDBCollection이다.
-
==============================
5.mongoengine에서 당신은 참조 된 개체의 인스턴스를 사용해야합니다. 그것은 ID가 설정되어 있어야합니다. 저자는 저자의 문서 인스턴스입니다 가정하자. 이 사용 그래서 :
mongoengine에서 당신은 참조 된 개체의 인스턴스를 사용해야합니다. 그것은 ID가 설정되어 있어야합니다. 저자는 저자의 문서 인스턴스입니다 가정하자. 이 사용 그래서 :
Post.objects(author__eq=author)
당신은이 작성자의 모든 게시물을 통해 갈 수 있습니다. Post.author는 ReferenceField로 정의되어야한다
-
==============================
6.몽고 2.4.1 버전을 사용하여
몽고 2.4.1 버전을 사용하여
이것은 당신이 OLA 수집을 위해 명령 줄에서 그것을 할 방법입니다 @DBRef dbrefName
db.OLA.find ({ "dbref Name.some fieldValue의": "개인"});
정확한 쿼리
db.OLA.find ({ "dbrefName $의 ID입니다.": ObjectId가 ( "1234")});
from https://stackoverflow.com/questions/6195286/how-to-query-mongodb-with-dbref by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 몽고에 인증 할 수 없습니다 "인증 실패" (0) | 2019.12.13 |
---|---|
[MONGODB] 어떻게 다른 하나 개의 MongoDB를 서버에서 데이터베이스를 복사합니까? (0) | 2019.12.13 |
[MONGODB] 또 다른 컬렉션에 MongoDB를 컬렉션의 저장 부분 집합 (0) | 2019.12.13 |
[MONGODB] / 자바 드라이버와 MongoDB를 지난 삽입 된 문서의 ID를 가져옵니다 (0) | 2019.12.13 |
[MONGODB] 몽구스의 스키마 변경 다루기 (0) | 2019.12.13 |