1
나는 하나 이상의 객체를 가지고 있습니다. 임베드 된 객체의 파일을 업데이트해야합니다. 여기 내 물건들.mongoid는 여러 객체에 모든 임베드 된 객체를 업데이트합니다.
{
"_id" : ObjectId("50dc134bb4a6de8e6b000001"),
"emails" : [
{
"_id" : ObjectId("50dc134bb4a6de8e6b000004"),
"_type" : "Email",
"name" : "personal",
"email" : "",
"current" : false
},
{
"_id" : ObjectId("51a855763183a6301e009461"),
"_type" : "Email",
"name" : "work",
"email" : "[email protected]",
"current" : true
},
],
}
{
"_id" : ObjectId("50dc134bb4a6de8e6b000002"),
"emails" : [
{
"_id" : ObjectId("50dc134bb4a6de8e6b000067"),
"_type" : "Email",
"name" : "personal",
"email" : "",
"current" : false
},
{
"_id" : ObjectId("51a855763183a6301e004795"),
"_type" : "Email",
"name" : "work",
"email" : "[email protected]",
"current" : true
},
],
}
컬렉션은 Contact
입니다. 여기에 을 설정해야합니다. name
은 personal
입니다. 나는 루프 기능을 시도했다. 그것은 잘 작동합니다.
contacts = Contact.where(:emails.elem_match => {"name" => "personal"})
contacts.each do |contact|
contact.email.where("name" => "personal").update_all(:current => true)
end
우리는 그래서 내가 알고 싶습니다
db.contacts.update({"emails": {$elemMatch : {"name" : "personal"}},{ $set: {"emails.$.current":true}})
처럼 여러 개체를 업데이트 쿼리의 한 줄을 쓸 수있는 여러 업데이트 할 mongoid 쿼리의 한 줄을 쓸 가능성이 있나요 몽고이드에있는 물건들.
고마워, 게리 무라카미, 나는 이미 이것을 시도했다. 그것은 작동하지 않았다. – Selvamani
전액 증거로 답변을 업데이트했습니다. mongo 쉘 라인과 동등하게 작동한다는 것을 스스로 확신 할 수 있습니다. –
@gary는 많은 품질의 답변을 제공해 주셔서 감사합니다. 이것에 대한 제안이 있습니까 : http://stackoverflow.com/questions/29719471/mongodb-mongoid-rails-unable-to-increment-counters-in-a-hash-in-embedded-documen – brg