什么是更好的实施? MongoDb查询

时间:2016-10-23 00:35:02

标签: mongodb mongodb-query

我需要一些MongoDb的帮助。我需要检查数据库中是否存在对象。如果是真的,那么我需要检查这个对象是否有特定的元素到数组(Products)。如果没有,我需要使用此元素(Cookie)创建此对象(Order)到数组(Products)。

示例数据:

Order { 
   _id: ObjectId("580bc55f54101f1d18152d88"),
   code: "AVG223424",
   products: [
     {
        name: "Cookie"     
     }, 
     {
        name: "Soda"     
     }
   ]
}

最后,更好的实施是什么?

1 个答案:

答案 0 :(得分:0)

假设您使用的名称为“Orders”的集合

    db
    .Orders
    .update({
        code: "12345"
    }, {
        $addToSet: {
            products: {
                name: "Cookie"
            }
        },
        $setOnInsert: {
            code: "12345"
        }

    }, {
        upsert: true
    });

此查询查找具有相同“代码”的文档,如果找到,将添加对象“{name:”Cookie“}”,如果没有其他具有相同键/值对的对象。如果文档不存在,'$ setOnInsert'命令将设置指定的字段 only 如果创建了新文档。