[]

nodejs mongodb update-insert yardım

ö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  (04.06.20 22:23:12 ~ 22:29:56) 
@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  (05.06.20 00:19:34) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.