Это мой final Структура документа. Я нахожусь на mongo 3.0.MongoDb вставить или добавить встроенный документ
{
_id: "1",
stockA: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ],
stockB: [ { size: "S", qty: 27 }, { size: "M", qty: 58 } ]
}
Я случайно добавление элементов внутри stockA
или stockB
коллекций. Я хотел бы придумать запрос, который будет удовлетворять следующие правила:
- Если
item
не существует - создать весь документ и вставить элемент вstock A or B
коллекции. - Если
item
существует, ноstock A or B
коллекция отсутствует создатьstock
коллекция и добавьтеelement
внутри коллекция. - если
item
есть иstock
коллекция есть только приложитьelement
внутри коллекция.
Вопрос: Можно ли достичь всего этого в одном запросе? Мое главное требование, чтобы текущая вставка была чрезвычайно быстрой и масштабируемой.
Если да, не могли бы вы помочь мне найти требуемый запрос.
Если нет, не могли бы вы посоветовать мне, как мне достичь требований самым быстрым и чистым способом.
Спасибо за помощь!
А как насчет полей 'details' и' category'? – styvane
@ Майкл, игнорируйте их пока. Позволяет делать это только для коллекций. В принципе, у меня есть только '_id' и набор коллекций внутри документа. –
Вы продолжаете использовать слово «коллекция», но то, что вы на самом деле означаете, это «массив». Может ли это быть правдой? Пожалуйста, попробуйте использовать правильную терминологию, или вы путаете и других, и себя. Иерархия сущностей в MongoDB: одна база данных имеет много коллекций, одна коллекция имеет много документов, один документ может иметь много полей, массивов и поддокументов, массив или поддокумент может содержать больше полей, массивов и поддокументов. – Philipp