Zaczynam z Meteorem i potrzebuję pomocy z Mongo. Mam kolekcję nazw, które wyświetlam na liście i chcę móc aktualizować jedną zmienną określonych pozycji w bazie danych na podstawie innych kryteriów. Zasadniczo chcę zrobić:Meteor/Mongo: Wyszukiwanie i aktualizacja niektórych elementów w kolekcji
Dla każdego wpisu, w którym charakterystyka A = prawda i B = prawda, zmienić charakterystykę C na fałsz.
Do tej pory próbowałem dowiedzieć się, w jaki sposób Mongo może obsłużyć "dla każdego" pętlę nad elementami kolekcji, a dla każdego elementu sprawdzić, czy warunki A i B są przechowywane, a następnie collection.update (element, {C: false}). To okazuje się o wiele bardziej problematyczne, niż myślałem. Chcę zrobić coś takiego (z użyciem manekina nazwy zmiennych):
for (i = 0; i < collection.find().count(); i++){
if (collection[i].A===true && collection[i].B===true)
collection.update(collection[i], {$set: {C: false}});
};
byłem zmieniając ten kod bazowy wokół, ale zaczynam odczuwać, że jestem brakuje czegoś podstawowe o indeksowanie/kolekcje jak pracować w Mongo. Czy możesz zindeksować taką kolekcję (a jeśli tak, to czy jest to najwygodniejszy sposób robienia tego, co próbuję zrobić?)?
Możesz zaakceptować własną odpowiedź :-) – Rahul
Działa to tylko dla pierwszego dokumentu pasującego do selektora. Potrzebujesz. collection.update ({A: true, B: true}, {$ set: {C: false}}, 0,1); dla wszystkich rzędów. –
@DavidWihl do edycji wielu wierszy musisz ustawić {multi: true} jako trzeci parametr zamiast 0,1 (patrz meteor docs, http://docs.meteor.com/#update). więc byłoby to: collection.update ({A: true, B: true}, {$ set: {C: false}}, {multi: true}) –