Ниже приведена структура моих данных:
(stored in the database already)
{
"_id" : ObjectId("5c3b917eff444cbc400a9939"),
"data" : [
{
"role" : [
"CARRY",
"CARRY",
"CARRY"
],
"kills" : [
"12",
"9",
"6"
],
"_id" : ObjectId("5c3b917eff444cbc400a9955"),
"name" : "Lisa",
"rank" : "DIAMOND",
"id" : 429,
"count" : 3
},
{
"_id" : ObjectId("5c3b917eff444cbc40042339"),
"data" : [
{
"role" : [
"CARRY",
"CARRY",
"CARRY"
],
"kills" : [
"5",
"2",
"1"
],
"_id" : ObjectId("5c3b917eff444cbc400a9955"),
"name" : "Joe",
"rank" : "DIAMOND",
"id" : 12,
"count" : 3
},
...
Теперь предположим, что у меня есть больше данных для обновления, одна информация Лизы, другая информация нового человека:
(new data that I have)
{
"_id" : ObjectId("5c3b917eff444cbc400a9939"),
"data" : [
{
"role" : [
"SUPPORT",
"SUPPORT",
"SUPPORT"
],
"kills" : [
"0",
"1",
"3"
],
"_id" : ObjectId("5c3b917eff444cbc400a9955"),
"name" : "Lisa",
"rank" : "DIAMOND",
"id" : 429,
"count" : 3
},
{
"_id" : ObjectId("5c3b917eff444cbc40042339"),
"data" : [
{
"role" : [
"CARRY",
"CARRY",
"CARRY"
],
"kills" : [
"1",
"7",
"5"
],
"_id" : ObjectId("5c3b917eff444cbc400a9955"),
"name" : "James",
"rank" : "DIAMOND",
"id" : 32,
"count" : 3
}
Я хотел только вставить новую роль Лизы и массив убийств в существующий массив ролей и убийств Лизы, а затем вставить новую запись для Джеймса.
Я попытался сделать следующее, где data.data состоит из записи для Джеймса и новой информации для Лизы. (2 объектных массива), поэтому я делаю цикл for ..
for(let i=0;i<data.data.length;i++){
ChampionData.findOne({"data.id":data.data[i].id},{"data.$":1},function(err,res){
if(!res){
console.log('no match!')
}else if(res.length!==0){
console.log('match found:')
console.log(res.data)
}
})
}
Любая помощь будет высоко ценится!