sql >> Database >  >> NoSQL >> MongoDB

Mongoose hoe een query te schrijven met if-voorwaarde?

U kunt javascript gebruiken om dynamisch een json-document te maken op basis van uw queryparameters.

Uw bijgewerkte functie ziet er ongeveer zo uit

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. Eenvoudige MySQL-database converteren naar een NoSQL-oplossing

  2. Mongodb/mangoest-insert is geen functie

  3. Hoe u een document en een enkel subdocument kunt vinden dat overeenkomt met bepaalde criteria in de MongoDB-verzameling

  4. Zal het redis incr-commando een beperking zijn tot een specifiek aantal?