Seçenek # 1: Uygulama yan güncelleme
Doctrine ODM kullanılırken en kolay yaklaşım, uygulama tarafında güncellemeyi gerçekleştirmektir. Böylece, güncellemek istediğiniz tüm nesneleri getirin, gerekli ayarlamaları yapın ve bunları temizleyin.
$services = $dm->createQueryBuilder('MyBundle:MyService')
->getQuery()
->execute();
foreach ($services as $service) {
$service->setUpdatedAt($service->getCreatedAt());
}
$db->flush();
$services
sen yineleme gibi belgeleri alıp bunu Mongo imleci temsil eder. Tüm belgeleri bir kerede koleksiyondan almak istiyorsanız
eagerCursor
değerini
true
'a ayarlayabilirsiniz.
Seçenek # 2: Veritabanı yan güncelleme Ayrıca veritabanının kendisi doğrudan güncelleştirme yapabilir
. Ancak bunu yapmak için, sorgu oluşturucu bu işlevi desteklemediğinden sorguyu kendiniz oluşturmanız gerekir. Eğer güncelleme daha fazla kontrol gerekiyorsa orada biraz daha mantık ekleyebilirsiniz böylece
// Get MongoDB instance from DocumentManager
$mongo = $dm->getDocumentDatabase('Fully/Qualified/Class/Name')
->getMongoDB();
// Iterate over the collection and update each document
$mongo->execute('
db.MyServiceCollection.find().forEach(function (item) {
db.MyServiceCollection.update(
{_id: item._id},
{$set: {updated_at: item.created_at}}
);
});
');
forEach
kullanılan fonksiyon, sadece normal bir javascript fonksiyonudur.
belki bir toplama ile ?? – Fran