Отказ от ответственности: я новичок в Mongo и в базах данных в целом, поэтому, если я не согласен с терминологией или понятиями, пожалуйста, дайте мне знать.
Для целей этого примера я хотел быхранить координаты мыши вместе в объекте, вложенном в документ.Этот документ будет выглядеть примерно так:
{ "_id" : ObjectId("4f39805d35919a2a7c7aba3e"), "mouseLoc" : { "x" : 10, "y" : 20 } }
Кажется, что атомарное обновление с помощью операций модификатора - это путь, так как я только храню значения здесь (извлекаю их в другом местев другом программном обеспечении).Тем не менее, я не могу понять часть запроса.Как мне получить доступ к этому документу для установки значений x и y?
Я использую Java, поэтому в настоящее время пытаюсь:
BasicDBObject mouseLoc = new BasicDBObject();
mouseLoc.put("x", mouseX);
mouseLoc.put("y", mouseY);
myCollection.update(queryObj, new BasicDBObject("$set", mouseLoc), true, false);
Однако я незнать, как указать этот queryObj для получения документа с помощью ключа mouseLoc.В качестве альтернативы, если есть более разумный способ хранения такой информации, пожалуйста, учите меня.
Я могу следовать советам по оболочке / JS Mongo, если это проще.
UPDATE: Я могу запросить этот документ, если я дам ему статическое поле, например, «имя».Итак, чтобы обновить этот документ:
{ "_id" : ObjectId("4f39805d35919a2a7c7aba3e"), "name" : "mouseLoc", "mouseLoc" : { "x" : 10, "y" : 20 } }
Я могу использовать этот код:
BasicDBObject mouseLoc = new BasicDBObject();
mouseLoc.put("x", mouseX);
mouseLoc.put("y", mouseY);
BasicDBObject queryObj = new BasicDBObject("name", "mouseLoc");
BasicDBObject updateObj = new BasicDBObject("$set", new BasicDBObject("mouseLoc", mouseLoc));
myCollection.update(queryObj, updateObj, true, false);
Однако, представляется излишним указывать это поле «имя», чтобы иметь возможностьполучить документ с помощью клавиши «mouseLoc».Может быть, я просто неправильно понимаю базу данных / дизайн монго?