繁体   English   中英

mongoDB查找,更新和引入一个查询

[英]mongoDB find, update and pull in One Query

我想从集合中查找所有数据,然后根据需要清空数组来更新某些字段。

const addCityFilter = (req, res) => {
  if (req.body.aCities === "") {
    res.status(409).jsonp({ message: adminMessages.err_fill_val_properly });
    return false;
  } else {
    var Cities = req.body.aCities.split(","); // It will make array of Cities
    const filterType = { "geoGraphicalFilter.filterType": "cities", "geoGraphicalFilter.countries": [], "geoGraphicalFilter.aCoordinates": [] };
    /** While using $addToset it ensure that to not add Duplicate Value
     * $each will add all values in array
     */
    huntingModel
      .update(
        {
          _id: req.body.id,
        },
        {
          $addToSet: {
            "geoGraphicalFilter.cities": { $each: Cities }
          }
        },
        {$set:{filterType}},
      ).then(function(data) {
        res.status(200).jsonp({
          message: adminMessages.succ_cityFilter_added
        });
      });
  }
};

采集

geoGraphicalFilter: {
    filterType: {
      type:String,
      enum: ["countries", "cities", "polygons"],
      default: "countries"
    },
    countries: { type: Array },
    cities: { type: Array },
    aCoordinates: [
      {
        polygons: { type: Array }
      }
    ]
  }

但是结果是,唯一的城市阵列得到了更新。 filterType不变。

您似乎正在传递filterType$set作为options参数,而不是update参数。

huntingModel
  .update(
    {
      _id: req.body.id,
    },
    {
      $addToSet: {
        "geoGraphicalFilter.cities": { $each: Cities }
      },
      $set: {
        filterType
      }
    }
  ).then(function(data) {
    res.status(200).jsonp({
      message: adminMessages.succ_cityFilter_added
    });
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM