2017-01-31 2 views
0

Я хочу добавить Не в запрос. но, к сожалению, я не получаю нужный результат. Я хочу получить результат, когда пользователь не равен идентификатору пользователя. Но я смущен тем, как я могу это добавить. Я попробовал несколько сценариев, но не смог.Исключить пользователя в матче MongoDB

server.get('/myFeedback', (req, res) => { 
      var userid = req.query.userID; 
      //console.log(req.query); 
     db.collection("tweetsWithSentimentFeedback").aggregate([ 
           { 
           $group: { 
            _id: { 
             topic: "$topic", 
             group : "$group", 
             type : "$type", 
             user : "$userName" 
            }, 
            count: { $sum: 1 }  
            } 
           },{ $group: { 
            _id: { 
             topic: "$_id.topic", 
             group : "$_id.group", 

             }, 
            typeAndCount: { 
             $addToSet: { 
              type: "$_id.type", 
              count: "$count" 
             } 
            }, 
            userName: { 
             $addToSet: { 
              user: "$_id.userName" 
             } 
            }, 
            totalCount: { 
             $sum: "$count" 
            } 
           } 
         }, 
         { $match: { $and: [ { totalCount: { $gt: 0, $lt: 15 } }, {userEqual: { $ne: [ "$userName.user", userid ] }} ] } }, 
          // Then sort 
           { "$sort": { "totalCount": -1 } } 
          ], (err, result) => { 
           if (err) { 
            console.log(err); 
           } 
           res.status(200).send(result); 
          }); 
    }); 

ответ

1

Вы должны добавить $match как первый этап фильтрации на user.

{ $match: { userName: { $ne: userid } } } 

Update:

db.collection("tweetsWithSentimentFeedback").aggregate(
    [{ 
     $group: { 
      _id: { 
       topic: "$topic", 
       group: "$group", 
       type: "$type", 
       user: "$userName" 
      }, 
      count: { 
       $sum: 1 
      } 
     } 
    }, { 
     $group: { 
      _id: { 
       topic: "$_id.topic", 
       group: "$_id.group" 
      }, 
      typeAndCount: { 
       $addToSet: { 
        type: "$_id.type", 
        count: "$count" 
       } 
      }, 
      userName: { 
       $addToSet: "$_id.userName" 
      }, 
      totalCount: { 
       $sum: "$count" 
      } 
     } 
    }, { 
     $match: { 
      { 
       totalCount: { 
        $gt: 0, 
        $lt: 15 
       } 
      }, 
      { 
       userName: { 
        $ne: userid 
       } 
      } 
     } 
    }, , { 
     $sort: { 
      totalCount: -1 
     } 
    }]) 
+0

что, если я не хочу, чтобы добавить имя пользователя: { $ addToSet: { пользователя: "$ _id.userName" } }, THN может я еще исключить идентификатор пользователя ? потому что я не хочу этого поля. и я новичок в mongodb. Я не получаю ваш первый этап. –

+0

Да, просто добавьте этап матча в конвейер и удалите вышеуказанный код. – Veeram

+0

вы можете отредактировать мой пост. для коррекции. –