在MongoDB中排除嵌入式文档中除单个字段之外的所有字段

汉斯马德

考虑以下文档:

{
    "_id": 1,
    "name" : "bob",
    "alotofstuff": [],
    "morestuff",
    "item": {
        "name": "baumeister",
        "manyfieldshere": 1,
        "evenmore": 2
    }
}

有没有一种方法可以返回文档,item除了name字段以外没有其他所有属性,如下所示:

{
    "_id": 1,
    "name" : "bob",
    "alotofstuff": [],
    "morestuff",
    "item": {
        "name": "baumeister",
    }
}

我想避免编写一个投影,其中必须包含所有其他字段{ name: 1, alotofstuff: 1, morestuff: 1, item.name: 1 }(实际文档要大得多)。

柯克·拉金(Kirk Larkin)

如果你可以使用聚合管道,这里有一个解决办法,将做你问什么,使用$addFields$project

db.your_collection.aggregate([
    { $addFields: { "item_name": "$item.name" } },
    { $project: { item: 0 } },
    { $addFields: { "item.name": "$item_name" } },
    { $project: { item_name: 0 } }
])

这是创建临时item_name属性,删除item属性,item.name从临时属性重新添加属性item_name,然后最终删除item_name临时属性的简单过程

我不能说这是一个干净的解决方案,但它是实用的-希望对您有所帮助。$match如果要首先过滤文档,则可以添加一个阶段作为第一个管道阶段(我想是的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从mongoDB中的手动参考中查找所有嵌入式文档

mgo,mongodb:从嵌入式结构中查找与一个字段匹配的文档

将嵌入式文档插入到mongodb文档中的新字段

Mongo查询嵌入式文档中的动态字段

Mongodb通过C#驱动程序使用多个字段匹配更新嵌入式文档

从嵌入式文档中删除字段

Mongodb Java 3.4-从嵌入式文档获取字段

MongoDB-在嵌入式文档中找不到特定字段

更新mongodb嵌入式数组中的所有元素

按嵌入式文档字段排序

需要从MongoDB嵌入式集合中计算单个字段计数

如何为MongoDB集合中的文档选择单个字段?

对于整个MongoDB集合,将嵌入式文档的字段放在其父级中的最有效方法是什么?

Mongodb $ project:排除子文档中除一个字段外的所有字段,其余保留

MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

是否有任何查询通过检查mongoDb中嵌套的嵌入式文档的字段来查找文档

MongoDB聚合:通过动态字段路径从嵌入式文档添加字段

mongodb $ lookup数组子文档中的单个字段

聚合管道中的嵌入式文档集合中的参考文档字段

Mongo嵌入式文档字段查询

如何在MongoDB中的嵌入式文档中获得同一级别的所有字段

Rails自动完成多个字段上的嵌入式文档

查询MongoDB中的嵌入式文档

在mongodb中排除子文档数组中的字段

Mongodb更新嵌入式字段

在mongodb中展开嵌入式文档

Mongodb:将字段添加到嵌入式文档中(无数组)

如何使用Mongoclient更新单个文档的嵌入式文档列表字段?

mongodb是否会在嵌入式文档的_id字段上自动创建索引?

TOP 榜单

热门标签

归档