Sizin için iki seçenek görüyorum.
İlk seçenek find-and-modify
fonksiyonu ile JohnnyHK's solution kullanmaktır:
(mc/find-and-modify "users"
(select-keys my-doc [:_id])
{ $push { :awards { :award "IBM Fellow"
:year 1963
:by "IBM" }}}
:return-new true)
İkinci seçenek save
yerine update
kullanmaktır. Eğer mongodb'den yüklenen tüm belgeye sahipseniz iyi bir seçimdir. update-in gibi $push
gibi mongodb operatörlerini clojure
gibi işlevlerle değiştirebilirsiniz. Clojure haritaları ile manipülasyon benim için daha iyi bir yaklaşım gibi görünüyor. Eğer mongodb operatörleri için clojure alternatifleri bulmakta zorlanıyorsanız size yardımcı olabilirim.
önceki Örneğin bu gibi görünecektir:
(mc/save-and-return "users"
(update-in my-doc [:awards] conj
{ :award "IBM Fellow"
:year 1963
:by "IBM" }))
Kendimi, daha Clojure-imsi görünüyor, çünkü bu şekilde tercih ediyorum.
teşekkürler. Leonid'in cevabını kabul ettim çünkü daha düşük bir itibara sahipti ve ödülün daha fazla faydasını görecekti. Her iki cevabı kabul edemediğimden en azından seninkini kestim. Umarım senin için uygun olur. – tobiasbayer
@CodeBrickie Leonid temelde cevabımı kopyaladığından beri hemfikir değilim, ama Obiwan'ın dediği gibi: "Elbette doğru olduğunu hissettiğin şeyi yapmalısın." – JohnnyHK
Seninkini kopyaladı ve ikinci bir seçenek ekledi. Bu yüzden de önemli bir değer üretti. – tobiasbayer