2015-09-24 2 views
0

Я имею JSON структуру, как это:Mongooperations добавить/удалить JSON в MongoDB

{

"prodinfo": { 
      "memberid": "m1", 
      "user":{ 
        "userid":"001", 
        "product":{ 
           "productname": ["pname1"], 
           "productid": ["p1"]  
           } 
        } 
      } 

}

для данного MemberId, он может иметь Mutiple идентификатор пользователя и идентификатор пользователя может иметь mutiple product.productname, product.productid в массиве. Я должен был выполнить добавление и удаление этого документа таким же образом. Я попытался реализовать то же самое с помощью Mongooperations (springframwork data), чтобы сохранить документ в MongoDB. Но я не могу делать моду. Может ли кто-нибудь вести меня, как достичь этого, используя Mongooperations/Mongotemplate из данных весенне-летней графики? Спасибо заранее!

+0

Не в соответствии с вашей структурой он не может. JSON, и поэтому BSON (на самом деле то, что использует MongoDB для хранения, а не JSON), может иметь только исключительное присутствие данного ключа, а не «множественные», как вы утверждаете. Для этого требуется структура «array» или «List», которая отличается от структуры «Hash/Map», которую вы описываете здесь. Я предлагаю вам не правильно относиться к тому, какова ваша настоящая структура. –

+0

@BlakesSeven, я пытаюсь сделать «для данного члена, он может иметь mutiple userid, и userid может иметь mutiple product.productname, product.productid в массиве. Мне нужно выполнить добавление и удаление этого документа в такой же моды », и для этого я думал, что структура JSON, упомянутая выше, я могу ошибаться, поскольку я новичок в mongodb. Просьба предложить, какова должна быть структура? – Dev

+1

Вы ошибаетесь, потому что упомянутая выше структура не содержит массивов, хотя вы продолжаете упоминать массивы. Если это ваша структура, это неверно. Или, альтернативно, это не ваша фактическая структура, и вам нужно изменить свой вопрос, чтобы показать правильную структуру. –

ответ

1

Пример

@Document 
public class prodinfo{ 
private String memberid; 
privare List<User> user; 

// getter and setter 
} 

public class User 
{ 
private String userId; 
private Product product; 

// getter and setter 
} 


public class product 
{ 
private List<String> productname; 
private List<String> productid; 

// getter and setter 
} 

Согласно вашему объяснению, здесь MemberID имеет несколько пользователей и пользователь имеет продукт, который содержит несколько ProductID и ProductName для конкретного идентификатора пользователя.

+0

Спасибо @nirajdarji, на самом деле я могу создать класс сущности на основе структуры JSON, но проблема, с которой я столкнулся, я не могу сохранить данные в моду, где для данного memeberid может быть mutiple userid и для userid может быть mutiple product.productname и product.productid (который будет структурой списка). Каждый раз, когда я устанавливаю значения и выполняю mongooperations.upsert(), он перезаписывается. – Dev

+0

мой код: 'Запрос запроса = новый запрос(); query.addCriteria (Criteria.where («user.userID»). Is (userID). AndOperator (Criteria.where (memberid) .is (memberid))); Обновление update = новое обновление(); update.set ("memberid", memeberID); update.set ("user.userid", userID); update.set ("user.product.productid", productID); update.set ("user.product.productName", productname); mongoOperations.upsert (запрос, обновление, ProdInfo.class); ' – Dev

+1

Я думаю, что способ, которым вы хотите сохранить данные по вашей структуре, был неправильным. Вы хотите сохранить несколько данных для некоторого поля, поэтому для этого вам нужен массив или список. –