sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose hur man skriver en fråga med if condition?

Du kan använda javascript för att dynamiskt skapa json-dokument baserat på dina frågeparametrar.

Din uppdaterade funktion kommer att se ut ungefär som

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. mongoexport E QUERY SyntaxError:Oväntad identifierare

  2. Multipel användning av positionsoperatorn `$` för att uppdatera kapslade arrayer

  3. Hur man serialiserar en karta i Java för att lagra i Redis?

  4. docker-compose wait-for.sh misslyckas för att vänta mongodb