mongodb返回字段可选

mongodb返回字段可选,mongodb,Mongodb,我有这样一份文件: { "_id" : "abcdefg", "status" : 1, "myData": { "a": "a", "b": "b" } }, { "_id" : "zxcvbnm", "status" : 3, "myData": { "a": "a", "b": "b" } } 如果“状态”==3,字段“myData”将返回,如 myCollection.find({}, {"status": 1, "myD

我有这样一份文件:

{
  "_id" : "abcdefg",
  "status" : 1,
  "myData": {
    "a": "a",
    "b": "b"
  }
},
{
  "_id" : "zxcvbnm",
  "status" : 3,
  "myData": {
    "a": "a",
    "b": "b"
  }
}
如果“状态”==3,字段“myData”将返回,如

myCollection.find({}, {"status": 1, "myData": 1})
如果“状态”!==3,字段“myData”将不会返回,如:

myCollection.find({}, {"status": 1, "myData": 0})

在mongodb中如何实现这一点?

您可以使用聚合将它们设置为null

db.collection.aggregate({
    $project: {
        status: 1,
        myData: {
            $cond: [{
                $eq: ['$status', 1]
            }, '$myData', null]
        }
    }
})

它不会删除该字段,但会为您节省一些流量。

您确实不能。您唯一可以做出这样一个断言的方法就是使用
mapReduce
,这样做太过分了。最好的方法是将您的条件应用于每个返回的结果,并从游标修改每个返回的文档。