Question: I'm using word2vec model to build a classifier on training data set and wonder what are technics to deal with unseen terms (words) in the test data.

Removing new terms doesn't seem like a best approach.
My current thought is to recalculate word2vec on combined data set (training + test) and replace new terms with nearest word from training data set (or maybe some linear combination of 2-3 nearest). Sounds a bit tricky, but should be doable.

Have you come across similar problem? Any idea/suggestion how to deal with unseen terms?

Answer: 
To get document without having name is N3 of properties use [$ne](https://docs.mongodb.com/v3.2/reference/operator/query/ne/#ne) (*not equal*) operator

```
db.collectionName.find( { "properties.name": { $ne: "N3" } } )

```

**Updated:** 

You need to use aggregate query to get all record with properties only discard properties element that contains N3 as name.

```
db.collectionName.aggregate([
    {$unwind:"$properties"},
    {$match:{"properties.name":{$ne:"N3"}}},
    {$group:{
        _id:"$_id",
         properties:{$push:"$properties"},
         menu: {$first:"$menu"}
        }
    }
])

```
Try to use the [`$ne`](https://docs.mongodb.com/v3.2/reference/operator/query/ne/) operator. You should be able to formulate a query using this keyword.