0
때때로 나는 POI의 도시 데이터베이스와 그 정보에 대한 새로운 수출을 얻었고 MongoDB에있는 모든 데이터를 Loopback-API와 함께 갖고 싶습니다. 따라서 필자는 원하는 구조로 데이터를 축소하고 가져 오려고합니다.MongoDB에 많은 데이터 세트를 올바르게 삽입 및/또는 업데이트 (몽구스 사용)?
이러한 내보내기를 처음 받으면 insertMany()를 사용하여 데이터를 간단하게 삽입 할 수 있습니다.
새로운 내보내기를 얻으면 실제로 기존 POI가 새 데이터로 대체되기를 원하는 업데이트 된 POI가 포함된다는 의미입니다. 그래서 나는 updateMany()를 사용할 것이라고 생각했지만, 내 경우에는 어떻게 할 것인지 생각할 수 없었다.
const fs = require('fs');
const mongoose = require('mongoose');
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
// Connect to database
mongoose.connect('mongodb://localhost/test', {
useMongoClient: true
}, (err) => {
if (err) console.log('Error', err);
});
// Define schema
let poiSchema = new mongoose.Schema({
_id: Number,
name: String,
geo: String,
street: String,
housenumber: String,
phone: String,
website: String,
email: String,
category: String
});
// Set model
let poi = mongoose.model('poi', poiSchema);
// Generate specified data from given export
let reducedData = data['ogr:FeatureCollection']['gml:featureMember'].reduce((endData, iteratedItem) => {
endData = endData.length > 0 ? endData : [];
endData.push({
_id: iteratedItem['service']['fieldX'],
name: iteratedItem['service']['fieldX'],
geo: iteratedItem['service']['fieldX']['fieldY']['fieldZ'],
street: iteratedItem['service']['fieldX'],
housenumber: iteratedItem['service']['fieldX'],
phone: iteratedItem['service']['fieldX'],
website: iteratedItem['service']['fieldX'],
email: iteratedItem['service']['fieldX'],
category: iteratedItem['service']['fieldX']
});
return endData;
}, []);
//
// HERE: ?!?!? Insert/update reduced data in MongoDB collection ?!?!?
//
mongoose.disconnect();
그래서 난 그냥 변경된 모든 업데이트하려면 :
는 여기에 지금까지 무슨이다.
물론 insertMany()로두면 dup 키로 인해 실패합니다.
"update"매개 변수가 json 객체 배열 인 경우 updateMany가 동일합니까? – SVARTBERG
예, updateMany의 첫 번째 매개 변수는 업데이트의 쿼리 대신 필터입니다. 그것이 도움이된다면 그것을 정답으로 표시하십시오 :) –