您好,我有以下数据库:
我的问题是如何“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}}'
}]
}
]
最佳答案
稍微澄清一下... 如果你有一个像这样的数据库:
然后如果你执行 db.users.find({ posts: { $elemMatch: { thread: "Sloan"} } })
,
你会得到这个(每个元素帖子都包括在内):
如果你这样做 db.users.find({"posts.thread":'Sloan'},{'posts.$':1})
,
你会得到这个(只包括相关的帖子):
(顺便说一句,它执行起来更快......如果你在 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/