So I have this: ({:company_profile_id ["2"], :topic :company, :url ["mikeshawauto.com"]})
And then I get this field name and value: (:company_profile_id) (["2"]) The next 3 lines of code are: old-field-value (get old-documents field-name []) new-field-value (into old-field-value field-value) document (assoc document field-name new-field-value) And when the function is next called, I end up with : ({:company_profile_id ["2"], :topic :company, :url ["mikeshawauto.com"]}) I need: ({:company_profile_id ["2", "2"], :topic :company, :url ["mikeshawauto.com"]}) So perhaps I've misunderstood what (into) is for? How do I add another the values of these 2 vectors together? On Wednesday, October 11, 2017 at 12:20:55 PM UTC-4, lawrence...@gmail.com wrote: > > Using conj instead of into, for no particular reason, except debugging. > The document is slowly built-up: > > ({:company_profile_id [["2"]], :topic :company, :url [["mikeshawauto.com > "]]}) > > ({:company_profile_id [["2"]], :topic :company, :url [["mikeshawauto.com > "]]}) > > ({:company_profile_id [["2"]], :topic :company, :url [["mikeshawauto.com"]], > :reference_id [["331089191"]]}) > > In the transition from row 1 to row 2, I assume the field being added is > company_profile_id. Why is there no change? Why isn't a new value added to > the vector? I must be missing something obvious. > > > > > > > > On Wednesday, October 11, 2017 at 11:44:40 AM UTC-4, lawrence...@gmail.com > wrote: >> >> I seem unable to figure out where I made a mistake, though this should be >> simple. >> >> I have two SQL calls that bring back 5 fields: >> >> SELECT company_profile_id , reference_id, reference_source FROM >> company_reference_id limit 1 ; >> >> +--------------------+--------------+------------------+ >> | company_profile_id | reference_id | reference_source | >> +--------------------+--------------+------------------+ >> | 2 | 331089191 | EIN | >> +--------------------+--------------+------------------+ >> >> SELECT company_profile_id, url FROM company_website limit >> 1 ; >> >> +--------------------+------------------+ >> | company_profile_id | url | >> +--------------------+------------------+ >> | 2 | mikeshawauto.com | >> +--------------------+------------------+ >> >> This brings back a total of 5 values. I need to have a document that has >> 5 values, though if values have the same field-name, then I want to >> consolidate them into one vector. There are 4 unique field names, so I >> expect to end up with 4 vectors, holding 5 values. Instead, I get this: >> >> ({:company_profile_id ["2"], :topic :company, >> :how-many-rows-and-fields-from-database 13, :url ["mikeshawauto.com"], >> :reference_id ["331089191"], :reference_source ["ein"]}) >> >> I expect: >> >> {:company_profile_id ["2" "2"] >> >> but I get: >> >> {:company_profile_id ["2"] >> >> The documents are combined in a map in an atom, with this function: >> >> >> (def documents (atom {})) >> >> >> (defn update-documents >> [denormalized-id field-name field-value >> how-many-rows-and-fields-from-database topic] >> {:pre [ >> (not (nil? denormalized-id)) >> (not (nil? field-name)) >> (vector? field-value) >> ]} >> (swap! documents >> (fn [old-documents] >> (slingshot/try+ >> (let [ >> document (get old-documents denormalized-id {}) >> old-field-value (get old-documents field-name []) >> new-field-value (into old-field-value field-value) >> document (assoc document field-name new-field-value) >> >> previous-how-many-rows-and-fields-from-database (get >> document :how-many-rows-and-fields-from-database 0) >> new-how-many-rows-and-fields-from-database (+ >> previous-how-many-rows-and-fields-from-database >> how-many-rows-and-fields-from-database) >> document (assoc document :topic topic) >> document (assoc document >> :how-many-rows-and-fields-from-database >> new-how-many-rows-and-fields-from-database) >> new-documents (assoc old-documents denormalized-id >> document) >> ] >> new-documents) >> (catch Object o >> (errors/log o) >> (slingshot/throw+ { >> :type ::update-documents >> :error o >> } >> )))))) >> >> Can I assume that this always gives me 2 values in a vector? >> >> old-field-value (get old-documents field-name []) >> new-field-value (into old-field-value field-value) >> document (assoc document field-name new-field-value) >> >> I'm going to guess that the bug is somewhere else in my code. But if >> anyone sees a flaw in this function, I'd be grateful if you could point it >> out to me. >> >> >> >> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.