首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择文档的子文档,并在mongoDB中排除if属性

选择文档的子文档,并在mongoDB中排除if属性
EN

Stack Overflow用户
提问于 2017-11-05 16:53:02
回答 1查看 34关注 0票数 0

我在mongoDb.中有以下文档结构

我希望能够只使用select,而不是all the courses中的teacher属性。我怎么能这么做?

我试过以下几种方法,但不起作用。我也希望当它找到result时,它会将它返回给console

我怎么能这么做?

代码语言:javascript
复制
    student.findCourses = (fcallback) => {
        var jCourses = {
            "courses": [
                {
                    "courseName": "Web-development"
                },
                {
                    "courseName": "Databases"
                },
                {
                    "courseName": "Databases"
                }
            ]
        }
    global.db.collection('students').find(({}, { jCourses: true, _id: false, firstName: false, lastName: false, age: false, teachers: false }).toArray, (err) => {

        if (err) {
            var jError = { "status": "error", "message": "ERROR -> student.js -> 001" }
            console.log(jError)
            return fcallback(true, jError)
        }
        var jOk = { "status": "ok", "message": "student.js -> found -> 000" }
        console.log(jOk)
        return fcallback(false, jOk)

    })
}

该文件:

代码语言:javascript
复制
 {
                "firstName": "Sarah",
                "lastName": "Jepsen",
                "age": 27,
                "courses": [
                    {
                        "courseName": "Web-development",
                        "teachers": [
                            {
                                "firstName": "Santiago",
                                "lastName": "Donoso"
                            }
                        ]
                    },

                    {
                        "courseName": "Databases",
                        "teachers": [
                            {
                                "firstName": "Dany",
                                "lastName": "Kallas"
                            },
                            {
                                "firstName": "Rune",
                                "lastName": "Lyng"
                            }
                        ]
                    },
                    {
                        "courseName": "Interface-Design",
                        "teachers": [
                            {
                                "firstName": "Roxana",
                                "lastName": "Stolniceanu"
                            }
                        ]
                    }
                ]
            }

结果应该如下所示:

代码语言:javascript
复制
     {
        "courses": [
            {
                "courseName": "Web-development"
            },
            {
                "courseName": "Databases"
            },
            {
                "courseName": "Databases"
            }
        ]
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-05 17:04:55

您可以使用点语法。

就像这样:

代码语言:javascript
复制
global.db.collection('students').find({}, { "courses.courseName": true, _id: false }).toArray((err, docs) => {
    if (err) {
        var jError = { "status": "error", "message": "ERROR -> student.js -> 001" }
        console.log(jError)
        return fcallback(true, jError)
    }
    var jOk = { "status": "ok", "message": "student.js -> found -> 000" }
    console.log(jOk);
    console.log(docs); // Will print to the console the data that you want
    return fcallback(false, jOk)

})

它将只打印 courseName of courses。

芒果壳上的例子:

代码语言:javascript
复制
> db.users.find().pretty()
{
        "_id" : ObjectId("59ff442eb40a672f2223a14f"),
        "firstName" : "Sarah",
        "lastName" : "Jepsen",
        "age" : 27,
        "courses" : [
                {
                        "courseName" : "Web-development",
                        "teachers" : [
                                {
                                        "firstName" : "Santiago",
                                        "lastName" : "Donoso"
                                }
                        ]
                },
                {
                        "courseName" : "Databases",
                        "teachers" : [
                                {
                                        "firstName" : "Dany",
                                        "lastName" : "Kallas"
                                },
                                {
                                        "firstName" : "Rune",
                                        "lastName" : "Lyng"
                                }
                        ]
                },
                {
                        "courseName" : "Interface-Design",
                        "teachers" : [
                                {
                                        "firstName" : "Roxana",
                                        "lastName" : "Stolniceanu"
                                }
                        ]
                }
        ]
}
> db.users.find({}, {_id: 1, "courses.courseName": 1}).pretty()
{
        "_id" : ObjectId("59ff442eb40a672f2223a14f"),
        "courses" : [
                {
                        "courseName" : "Web-development"
                },
                {
                        "courseName" : "Databases"
                },
                {
                        "courseName" : "Interface-Design"
                }
        ]
}
> db.users.find({}, {_id: 0, "courses.courseName": 1}).pretty()
{
        "courses" : [
                {
                        "courseName" : "Web-development"
                },
                {
                        "courseName" : "Databases"
                },
                {
                        "courseName" : "Interface-Design"
                }
        ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47124130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档