带有单个查询的条件$ push

时间:2016-10-14 20:13:30

标签: arrays mongodb mongodb-query

给定名为NamedLists的集合中的文档架构:

{
    "name":"FOO",
    "items":[
        {"primary":4524013,"secondary":9753847},
        {"primary":4420220},
        {"primary":5317116,"secondary":3838379},
        {"primary":4230616},
        {"primary":7389755,"secondary":3838576}
        ]
}

规则:

  1. “数组”
  2. 中的对象可能存在“辅助”字段,也可能不存在
  3. 文档的items数组中不能包含具有相同“primary”值的对象
  4. “NamedLists”集合中的两个文档在其项目数组中可能没有相同的对象
  5. 例如,由于{"primary":4420220}位于两个不同的项目数组中,因此不允许以下内容。但是,{"primary":4420220, "secondary": 7897897 }是允许的。

    { "name":"FOO", "items":[
        {"primary":4524013,"secondary":9753847},
        {"primary":4420220},
        {"primary":5317116,"secondary":3838379},
        {"primary":4230616},
        {"primary":7389755,"secondary":3838576}
    ]}
    
    { "name":"BOO", "items":[
        {"primary":4420220}
    ]}
    

    此查询满足规则#2但不满足#3:

    db.NamedLists.update({ name: "FOO", { primary: { $ne: 4524013 } },
              { $push: {  items: 4524013 } });
    

    是否有办法将$对象的主要值(或整个对象本身)与另一个文档的items数组中的对象不匹配时将新对象推送到给定文档的items数组中?

    在SQL中,您可以使用嵌套的SELECT来实现此目的。 MongoDB的?

0 个答案:

没有答案