У меня есть очень простой набор документов.
> db.ysTest.aggregate({$project:{_id:1,unitStatus:1}});
{
"result" : [
{
"_id" : ObjectId("514309f3e18aa7d14100217a"),
"unitStatus" : "es_pws"
},
{
"_id" : ObjectId("514309f3e18aa7d141002816"),
"unitStatus" : "es_run"
},
{
"_id" : ObjectId("514309f0e18aa7d14100021e")
}
],
"ok" : 1
}
При использовании «агрегата» с использованием $match и $project я ожидаю 1 документ, но получаю их все. примечание: я использую агрегат, потому что он будет частью более сложного сопоставления, но я старался сделать его простым для этого примера.
> db.ysTest.aggregate({
... $match: {
... unitStatus: {$exists: true, $nin: ["es_pws", "es_stl"]}
... },
... $project: {_id: 1,unitStatus:1}
... });
{
"result" : [
{
"_id" : ObjectId("514309f3e18aa7d14100217a"),
"unitStatus" : "es_pws"
},
{
"_id" : ObjectId("514309f3e18aa7d141002816"),
"unitStatus" : "es_run"
},
{
"_id" : ObjectId("514309f0e18aa7d14100021e")
}
],
"ok" : 1
}
Что я делаю не так ?
unitStatus: {$exists: true}
, чтобы убедиться - person sambomartin   schedule 21.03.2013