öncelikle yazılımla uğraşıyorum bayadır fakat bu nodejs-mongo dünyasına uzağım. küçük bi proje yapmaya çalışıyorum ve bu süreçte de öğrenmeye çalışıyorum.

bi kaç tane api url'den axios kullanarak dataları çekiyorum. elimde baya bi data oluyor, loop içinde tek tek insert ile kaydediyordum daha önce ve uzun sürüyordu. mongoose kullanarak insertmany ile tek seferde kaydediyorum ve süre kısaldı diyebilirim. fakat her 1-2 sn'de data çekmek için yeni istek atıyorum. elimdeki datalar şişiyor bu yüzden. asıl amacım data varsa update etsin, yoksa insert etsin gibi bir yapı kurmam lazım.

bunun için önce find ile tüm datayı alıp sonra bu data içersinde dönerken bulursam update et, bulamazsam insert et mi demem lazım? bu mantığı kurarsam çok yavaşlar mı? başka önerisi olan var mıdır? sql bilgim var ama bu mongodb tarafında çok aşina değilim. o yüzden varsa başka kullanabileceğim örnek vs. çok makbule geçer.

 

findOneAndUpdate({}, {upsert : true, new : true})

yanlış hatırlamıyorsam eğer..

edit : bunu çoklu yapmak istiyormuşsun şimdi fark ettim. updateMany var bunun için de. Aslında aklına gelebilecek çoğu şey düşünülmüş zaten. Bi noktada bulk'a, aggregations'lara ihtiyaç duyacaksın. Önce kullan, sonra öğren pratiği mantıklı ama istediğini yapabilmek için önce cebelleşip sonra tek satırla, tek komutla yapabildiğini görünce yazık oluyor :) Dolayısıyla tavsiyem; ya mongodb dökümanlarına biraz göz gezdirmek ya da birkaç makale ya da hızlı bir tutorial ile neler yapabileceğini görmen.

IncredibleMau

@Mau + 1. Bulk ve upsert sana lazım olan keyword'ler. Bu update işi için _id kullanmadan search yapıyorsan biraz yavaş olabilir, onu da search yaptığın field'ı index'leyerek çözebilirsin.

plutongezegendegilmi
1

mobil görünümden çık