node.js - Mongodb子字段选择

标签 node.js mongodb nosql

您好,我有以下数据库:

a busy cat

我的问题是如何“SELECT name FROM posts Where thread=Sloan”

因为我正在尝试进入 RockMongo shell:“db.users.find({"posts.thread":'Sloan'})”但它返回所有集合数据

***** 使用 json-generator.com ********************

[
            '{{repeat(5, 7)}}',
            {
                id: '{{index}}',
                group: '{{surname}}',
                name: '{{firstName}} {{surname}}',

                posts: [
                    '{{repeat(25)}}',
                    {
                        thread:'{{surname}}',
                        sb:[
                            '{{repeat(100)}}',
                            {
                                id: '{{index}}',
                                name: '{{firstName}} {{surname}}'

                            }
                        ]
                    }
                ],

                users:[
                    '{{repeat(25)}}',
                    {
                        name:'{{firstName}}'
                    }]


            }
        ]

最佳答案

稍微澄清一下... 如果你有一个像这样的数据库:

enter image description here

然后如果你执行 db.users.find({ posts: { $elemMatch: { thread: "Sloan"} } }), 你会得到这个(每个元素帖子都包括在内):

enter image description here

如果你这样做 db.users.find({"posts.thread":'Sloan'},{'posts.$':1}), 你会得到这个(只包括相关的帖子):

enter image description here

(顺便说一句,它执行起来更快......如果你在 posts.thread 上添加索引,它会更快。)

最后一件事,我认为这可能会产生误导。 db.users.find({ posts: { $elemMatch: { thread: "Sloan"} } }, { name: 1 }) 投影将给出元素名称“gloria sharpe”,但是来 self 从这个问题中了解到,他更愿意获得名称 post.thread.sb.name。这就是为什么他只想将相关帖子作为答案,而不是该元素的所有帖子。

关于node.js - Mongodb子字段选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18287603/

相关文章:

javascript - 根据条件更新某个字段的多条mongoDB记录

javascript - 为什么我的 eno.js 终端只能在特定路径上工作?

node.js - 使用nodejs访问rest api

mongodb - 允许自定义 CRDT 合并的分布式数据库

php - 尝试在 Windows 上使用 MAMP 在 php 中安装 mongodb

mongodb - 对多个字段排序 mongoDB

javascript - 如何只在数据推送完成时才执行回调?

node.js - openshift 上的 socket.io 和 Angular-fullstack

javascript - Mongoose 模式方法和 "this"更新属性 - NodeJS

database - 用于审计数据的 NoSQL 或 RDBMS