【问题标题】:MongoDB error on find()find() 上的 MongoDB 错误
【发布时间】:2014-02-27 05:08:14
【问题描述】:

我刚刚开始创建我的 MongoDB 架构(我是 mongo 的新手),我的架构如下例所示:

users : [
    {
        _id : 11,
        name : "jhon",
        mail : "jhon@mail.com"
    },
    {
        _id : 12,
        name : "smith",
        mail: "smith@mail.com"
    }
]

我想检索某些用户信息,通过_id... 例如:

db.users.find({"users._id" : 11})

然后我的结果应该是:

_id : 11,
name : "jhon",
mail : "jhon@mail.com"

但我得到的结果是users文档的所有用户,我只有一个,确定_id的用户。

我怎样才能为此编写查询? 以防万一,我的架构设计正确?

感谢您的帮助! :)

【问题讨论】:

  • 在您的示例中,您是将users 集合显示为数组还是您的users 集合仅包含一个文档,该文档还具有一个名为users 的字段?
  • 我的主要收藏它叫做users,里面我也有一个叫做users的文档。在users数组里面我想存储未知数量的用户,然后我想查询使用它的用户_id.. 我不知道这是否可能?
  • 好的,我知道我得到了我想要的结果。但只是一个小问题,你能解释一下为什么使用这部分吗? {"_id" : 0, 'users.$' : 1} ...感谢您的回答:D
  • 这是用于抑制输出中的_id 字段并仅包含匹配的users 元素的投影参数。

标签: mongodb find schema


【解决方案1】:

试试这个

db.users.find({"_id" : 11})

【讨论】:

  • 我刚刚尝试过,但不工作,显示空白屏幕.. :/.. 还有其他建议吗?
  • 即使在“_id”中有引号?
  • 是的,我加了引号,结果是一样的..我在想的是架构的设计,它不允许我查询..
  • 如果你打电话给db.users.findOne(),你得到记录了吗?
  • 当然,使用db.users.find()db.users.findOne() 查询没有问题
【解决方案2】:

您询问您的架构是否设计正确。这当然取决于您的用例,但答案可能是……不。您可能想要的是多个文档,而不是带有数组的单个文档。例如,我使用 mongo shell 插入了一些文档:

> db.users.insert({_id: 11, name: "jhon", mail: "jhon@mail.com"})
> db.users.insert({_id: 12, name: "smith", mail: "smith@mail.com"})

然后这是在 mongo shell 中输入的一个查询,它将返回所有文档:

> db.users.find()
{ "_id" : 11, "name" : "jhon", "mail" : "jhon@mail.com" }
{ "_id" : 12, "name" : "smith", "mail" : "smith@mail.com" }

如果你有 _id,你可以只查询那个文档:

> db.users.findOne({_id: 11})
{ "_id" : 11, "name" : "jhon", "mail" : "jhon@mail.com" }

数组有其用途,但您在这里所做的这种事情通常是处理集合中的多个文档,而不是数组中的子文档。

这有帮助吗?

【讨论】:

  • 很多,因为我是 mongo 的新手,我想我现在不想弄乱数组。谢谢你的回答:)
猜你喜欢
  • 2022-10-31
  • 2022-08-18
  • 2013-12-17
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2014-07-12
相关资源
最近更新 更多