查找()时出现MongoDB错误

查找()时出现MongoDB错误,mongodb,find,schema,Mongodb,Find,Schema,我刚刚开始创建我的MongoDB模式(我是mongo上的新手),我的模式如下所示: users : [ { _id : 11, name : "jhon", mail : "jhon@mail.com" }, { _id : 12, name : "smith", mail: "smith@mail.com" } ] 我想检索基于\u id的特定用户信息。。。 例如:

我刚刚开始创建我的MongoDB模式(我是mongo上的新手),我的模式如下所示:

users : [
    {
        _id : 11,
        name : "jhon",
        mail : "jhon@mail.com"
    },
    {
        _id : 12,
        name : "smith",
        mail: "smith@mail.com"
    }
]
我想检索基于
\u id
的特定用户信息。。。 例如:

db.users.find({"users._id" : 11})
然后我的结果应该是:

_id : 11,
name : "jhon",
mail : "jhon@mail.com"
但是我得到的结果是
users
文档的所有用户,我只有一个,一个拥有确定的
\u id
的用户

我怎样才能写一个查询呢?。 以防万一,我的模式设计正确吗

谢谢你的帮助!:)

试试这个

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

您询问您的模式设计是否正确。这当然取决于您的用例,但答案可能是。。。不需要。您可能需要的是多个文档,而不是带有数组的单个文档。例如,我使用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" }
数组有它们的用途,但是您在这里所做的事情通常是在集合中的多个文档中完成的,而不是在数组中的子文档


这有帮助吗?

我刚试过,但不起作用,请显示空屏幕:/。。还有其他建议吗?即使在“_id”中加了引号?是的,我加了引号,结果是一样的。。我想的是模式的设计,不允许我查询。如果你调用
db.users.findOne()
你得到记录了吗?当然,在你的例子中,我查询
db.users.find()
db.users.findOne()
没有问题,您是将您的
用户
集合显示为一个数组,还是您的
用户
集合仅包含一个文档,其中还包含一个名为
用户
的字段?我的主要集合名为
用户
,其中我还有一个名为
用户
的文档。。在
users
数组中,我想存储未知数量的用户,然后我想使用它的
\u id
查询用户。。我不知道这是否可能?看这个问题:好的,知道我得到了我想要的结果。。但有一个小问题,你能举例说明为什么要用这个零件吗<代码>{“_id”:0,'用户。$':1}。。。谢谢你的回答:这是用于抑制输出中的
\u id
字段的投影参数,只包括匹配的
用户
元素。很多,因为我是mongo新手,我想我现在不想弄乱数组。谢谢你的回答:)