[MONGODB] 또 다른 컬렉션에 MongoDB를 컬렉션의 저장 부분 집합
MONGODB또 다른 컬렉션에 MongoDB를 컬렉션의 저장 부분 집합
그래서 같은 세트가
{date: 20120101}
{date: 20120103}
{date: 20120104}
{date: 20120005}
{date: 20120105}
어떻게 다른 컬렉션에 날짜 '20120105'에 해당 문서의 일부를 저장합니까?
즉 db.subset.save (db.full_set.find ({날짜 : "20120105"}));
해결법
-
==============================
1.다음은 쉘 버전입니다 :
다음은 쉘 버전입니다 :
db.full_set.find({date:"20120105"}).forEach(function(doc){ db.subset.insert(doc); });
참고 : MongoDB를 2.6로, 통합 프레임 워크는 빨리이 일을 가능하게한다; 자세한 내용은 MELAN의 답변을 참조하십시오.
-
==============================
2.새로운 해결책으로 그 문제에 대한 집계 프레임 워크를 사용하는 권합니다 :
새로운 해결책으로 그 문제에 대한 집계 프레임 워크를 사용하는 권합니다 :
db.full_set.aggregate ([{$ 일치 : {날짜 : "20120105"}}, {$ 아웃 : "집합"}]);
그것은 100 배 빠른 대해 forEach보다 적어도 내 경우에 대해 작동합니다. 찾기 () 및 삽입 ()을 기반으로하는 솔루션 다시 다음 서버에서 클라이언트로 모든 문서를 보내고하는 반면, 전체 집계 파이프 라인의 mongod 프로세스에서 실행되기 때문입니다. 이것은 서버와 클라이언트가 동일한 시스템에있는 경우에도, 성능이 저하됩니다.
-
==============================
3.사실,에 ... MongoDB의에서 선택 SQL의 삽입의 동등한이있다. 첫째, 당신은 문서의 배열로 여러 문서를 변환; 당신은 대상 컬렉션에 배열을 삽입
사실,에 ... MongoDB의에서 선택 SQL의 삽입의 동등한이있다. 첫째, 당신은 문서의 배열로 여러 문서를 변환; 당신은 대상 컬렉션에 배열을 삽입
db.subset.insert(db.full_set.find({date:"20120105"}).toArray())
-
==============================
4.가장 일반적인 해결책은 이것이다 :
가장 일반적인 해결책은 이것이다 :
집계 (@melan에 의해 주어진 답)의 만들기 사용 :
db.full_set.aggregate({$match:{your query here...}},{$out:"sample"}) db.sample.copyTo("subset")
이 동작하기 전에 "집합"문서는 당신이 그 "이전"문서를 보존하고 단지에 새 집합 삽입 할 경우에도이 작동합니다.
사항 copyTo () 명령은 같은 _id와 문서를 바꾸기 때문에 관리는주의해야합니다.
-
==============================
5.에 ... 선택 SQL의 삽입의 직접 해당이 없습니다 ....
에 ... 선택 SQL의 삽입의 직접 해당이 없습니다 ....
당신은 그것을 스스로 알아서해야합니다. 관심의 문서를 가져 오기 다른 컬렉션에 저장합니다.
당신은 쉘에서 그것을 할 수 있습니다,하지만 난 루비의 작은 외부 스크립트를 사용하십시오. 이 같은:
require 'mongo' db = Mongo::Connection.new.db('mydb') source = db.collection('source_collection') target = db.collection('target_collection') source.find(date: "20120105").each do |doc| target.insert doc end
-
==============================
6.MongoDB의 새로운 모음으로 하위 집합을 저장할 수있는 운영자 밖으로 $와 함께 집계 있습니다. 다음 세부 사항은 다음과 같습니다 :
MongoDB의 새로운 모음으로 하위 집합을 저장할 수있는 운영자 밖으로 $와 함께 집계 있습니다. 다음 세부 사항은 다음과 같습니다 :
밖으로 $는 집계 파이프 라인에 의해 반환되는 문서를 취득 해 지정된 컬렉션에 기록합니다.
구문 :
{ $out: "<output-collection>" }
예 모음 책은 다음과 같은 문서가 포함되어 있습니다 :
{ "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 } { "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 } { "_id" : 8645, "title" : "Eclogues", "author" : "Dante", "copies" : 2 } { "_id" : 7000, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 } { "_id" : 7020, "title" : "Iliad", "author" : "Homer", "copies" : 10 }
책 컬렉션에서 데이터를 다음의 통합 작업을 선회는 저자에 의해 그룹화 제목이 다음 저자 컬렉션에 결과를 기록합니다.
db.books.aggregate( [ { $group : { _id : "$author", books: { $push: "$title" } } }, { $out : "authors" } ] )
수술 후, 저자의 수집은 다음과 같은 문서가 포함되어 있습니다 :
{ "_id" : "Homer", "books" : [ "The Odyssey", "Iliad" ] } { "_id" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" ] }
묻는 질문에서 쿼리를 다음 사용하고 새로운 컬렉션 데이터베이스에 'col_20120105를'라는 이름 얻을 것이다
db.products.aggregate([ { $match : { date : "20120105" } }, { $out : "col_20120105" } ]);
from https://stackoverflow.com/questions/9711529/save-subset-of-mongodb-collection-to-another-collection by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 다른 하나 개의 MongoDB를 서버에서 데이터베이스를 복사합니까? (0) | 2019.12.13 |
---|---|
[MONGODB] DBRef와 MongoDB를를 조회하는 방법 (0) | 2019.12.13 |
[MONGODB] / 자바 드라이버와 MongoDB를 지난 삽입 된 문서의 ID를 가져옵니다 (0) | 2019.12.13 |
[MONGODB] 몽구스의 스키마 변경 다루기 (0) | 2019.12.13 |
[MONGODB] MongoDB를 : 대신 '_id'출력 'ID' (0) | 2019.12.13 |