sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose, jak napsat dotaz s podmínkou if?

Pomocí javascriptu můžete dynamicky vytvořit dokument json na základě parametrů dotazu.

Vaše aktualizovaná funkce bude vypadat nějak takto

post.getSpecificDateRangeJobs = function(queryData, callback) {

  var matchCriteria = queryData.matchCriteria;
  var currentDate = new Date();

  // match document
  var match = {
    "expireDate": {
      "$gte": currentDate 
    }
  };

  if (matchCriteria !== "") {
    match["$text"]: {
      "$search": matchCriteria
    }
  };

  // group document
  var group = {
    _id: null
  };

  // Logic to calculate hours difference between current date and publish date is less than 30 hours.

  if (queryData.dateGroups.thirtyHourAgo) {
    group["thirtyHourAgo"] = {
      "$sum": {
        "$cond": [{
            "$lte": [{
              "$divide": [{
                "$subtract": [currentDate, "$publishDate"]
              }, 1000 * 60 * 60]
            }, 30]
          },
          1,
          0
        ]
      }
    };
  }

  // Similarly add more grouping condition based on query params.

  var postsCollection = post.getDataSource().connector.collection(
    post.modelName
  );

  // Use aggregate builder to create aggregation pipeline.

  postsCollection.aggregate()
    .match(match)
    .group(group)
    .exec(function(err, groupByRecords) {
      if (err) {
        return callback("err");
      }
      return callback(null, groupByRecords);
    });

};


  1. MongoDB najít a odstranit - nejrychlejší způsob

  2. Připojení k databázi Mongo přes SSH tunel v Javě

  3. $addToSet implementace pro aktualizaci pole na žádost PATCH

  4. Dotaz na kolekci mongodb jako dynamický