2012-04-03 3 views
10

만 호출하면 mongodb에 JSON 객체의 배열을 저장할 수 있습니까? 무엇인가 :하나의 호출로 객체 배열을 몽구스 DB에 저장하는 방법은 무엇입니까?

schemeObject.save(array_of_json_object, callback); 

나는 mongooosejs와의 수를 생각하지 않는다 mongoosejs

+0

당신이 정답을 업데이트하십시오 수뿐만 아니라 몽구스와 함께 작동? –

+0

@IcyFlame 귀하의 링크 된 게시물은 기술적으로이 게시물과 중복됩니다. –

+0

@DanMandle 오른쪽! 나는 날짜를 알지 못했다. 지적 해 주셔서 고마워요. – IcyFlame

답변

5

을 사용하고 있습니다. 그러나 기본적으로 지원되는 mongodb의 BATCH 삽입을 사용할 수 있습니다.

유용한 링크 :

http://www.mongodb.org/display/DOCS/Inserting#Inserting-Bulkinserts

https://groups.google.com/forum/#!msg/mongoose-orm/IkPmvcd0kds/bZuYCN_orckJ

+0

답변은 두 번째 링크에서 찾을 수 있습니다. 감사합니다 – jAckOdE

+3

더 이상 정확하지 않습니다. 대신 다음 작업을 수행하십시오. http://stackoverflow.com/a/22874288/687677 – superluminary

0

어떻게 이런 일에 대해? 나는

var arr = // array of objects; 
    res = []; 

arr.forEach(function (item) { 
    item.save(function (err) { 
     res.push(err); 
     if (res.length === arr.length) 
     { 
      // Done 
     } 
    }); 
}); 
+0

한 번에 하나씩 일괄 삽입 할 수 있습니다! – JehandadK

23

이 있습니다 .. .. 그것은 전체 배열을 통해 루프를 알고 이에 대한 빅 O에 대해 물어 해달라고 .. 아마 삽입하는 가장 좋은 방법을하지만 어떤 종류의 단지 초기 데이터 덤프 작동 MongooseJS로 일괄 삽입하는 방법. 나는이 질문이 질문되었거나 대답 되었기 때문에 그것이 새로운 특징인지 모르겠다. 그러나 나는 누군가가 수색에서 여기 오게된다면, 그것을 할 방법을 알아야한다고 생각했다. 내가 사용했던 http://mongoosejs.com/docs/api.html#model_Model.create

+3

새 문서를 만들려는 경우 작동합니다. 쿼리에서 반환 된 배열 또는 문서를 업데이트하는 방법은 어떻습니까? – jAckOdE

+0

그 때문에 find()와 forEach()를 수행하고 값을 업데이트하고 각각에 대해 save()를 수행해야한다고 생각합니다. 그러나 저는 몽구스에게있어서 처음입니다. –

0

다른 해결 방법 :

var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; 
Candy.create(array, function (err, jellybean, snickers) { 
    if (err) // ... 
}); 

다음은 워드 프로세서입니다. 약속이있는 몽구스를 사용하는 경우 Q을 사용하면됩니다.

당신은 아래의 코드를 사용하여 몽구스의 기본 약속으로 Q를 사용할 수 있습니다 :

const mongoose = require('mongoose'); 
mongoose.Promise = require('q').Promise; 

는 그런 다음 아래와 같이 문서의 배열을 저장할 수 있습니다. users 변수에 표시된 User 모델의 배열을 저장한다고 가정 해 보겠습니다.

Q 
    .all(users.map(curr => curr.save())) 
    .then((results) => { //do something }) 
    .catch((err) => { //handle error }) 

.save()q 약속과 배열을 map 기능을 사용하여, 우리는 사용자 모델의 배열을 사용하여 약속의 배열을 만들 수 있습니다 반환합니다.

0

이것은

Laptop.insertMany(laptopData, function (err, laptop) { 
    if (err) { 
    console.log(err); 
    }; 
    console.log(laptop); 
}); 
관련 문제