排除Mongodb中没有数组的嵌套子文档

时间:2015-10-28 17:21:09

标签: mongodb meteor

以下是如何将数据插入“Products”MongoDB集合(使用Meteor):

Products.insert(
{
    productOne:
    {
        publicData:
        {
            pricePerUnit : 1,
            label : "The first product"
        },
        privateData:
        {
            test1: "xxxxx",
            test2: "xxxxx"
        }
    },
    productTwo:
    {
        publicData:
        {
            pricePerUnit : 2,
            label : "The second product"
        },
        privateData:
        {
            test1: "yyyyy",
            test2: "yyyyy"
        }
    }
}
);

我想检索所有产品,但没有“privateData”子文档,以获取此信息:

{
    productOne:
    {
        publicData:
        {
            pricePerUnit : 1,
            label : "The first product"
        }
    },
    productTwo:
    {
        publicData:
        {
            pricePerUnit : 2,
            label : "The second product"
        }
    }
}

我用“$ elemMatch”尝试了几件事,但我真的没有成功,我很难理解我甚至应该这样做。

有人会有建议吗?任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:3)

您的查询将与此类似

Products.find({},{
        fields: {
            privateData: 0
        }
    }

privateData:0将确保省略该字段。

请参阅https://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/了解详情

答案 1 :(得分:0)

如果您可以使用聚合框架,则可以使用$project运算符:

db.<colletion_name>.aggregate( { $project: { publicData: 1} } );

您将只使用publicData字段

取回所有文档