Mongodb Mongo不返回文档,即使文档存在

Mongodb Mongo不返回文档,即使文档存在,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,因此,我进入mongo shell/mongo,并执行以下命令: >>>use mydb >>>show collections myc myotherc users >>>db.myc.find() { "_id" : ObjectId("5c8dd1c7b350e73a6bc7cf50"), "name" : "mfirst", "theowner" : ObjectId("5c8d7146bc279c28a6ded7b2"), "mo

因此,我进入mongo shell
/mongo
,并执行以下命令:

>>>use mydb
>>>show collections
myc
myotherc
users

>>>db.myc.find()
{ "_id" : ObjectId("5c8dd1c7b350e73a6bc7cf50"), "name" : "mfirst", "theowner" : ObjectId("5c8d7146bc279c28a6ded7b2"), "mowner" : ObjectId("5c8dcb3a7f1b20386577d4bc"), "created" : ISODate("2019-03-17T04:49:11.194Z"), "__v" : 0 }
{ "_id" : ObjectId("5c8dd4dfb547843bdee5b9bd"), "name" : "mlast", "theowner" : ObjectId("5c8d7146bc279c28a6ded7b2"), "mowner" : ObjectId("5c8dcb3a7f1b20386577d4bc"), "created" : ISODate("2019-03-17T05:02:23.723Z"), "__v" : 0 }

>>>db.myotherc.find()
{ "_id" : ObjectId("5c8dcb3a7f1b20386577d4bc"), "people" : [ ObjectId("5c8d7146bc279c28a6ded7b2") ], "name" : "thename", "owner" : ObjectId("5c8d7146bc279c28a6ded7b2"), "created" : ISODate("2019-03-17T04:21:14.388Z"), "__v" : 0 }

>>>db.myc.find({"mowner._id":"5c8dcb3a7f1b20386577d4bc"})

>>>db.myc.find({"mowner.name":"thename"})
最后两个查询都不返回任何内容,尽管我认为语法正确并且确实存在。知道为什么吗?

试试:

db.myc.find({"name":"thename"})
db.myc.find({"mowner": ObjectId("5c8dcb3a7f1b20386577d4bc")})
db.myc.find()

{“_id”:ObjectId(“5c8dd1c7b350e73a6bc7cf50”),“name”:“mfirst”, “所有者”:ObjectId(“5c8d7146bc279c28a6ded7b2”),“割草机”: ObjectId(“5c8dcb3a7f1b20386577d4bc”),“已创建”: ISODate(“2019-03-17T04:49:11.194Z”),“__v”:0}

{“_id”:ObjectId(“5c8dd4dfb547843bdee5b9bd”),“名称”:“mlast”,“所有者”: ObjectId(“5c8d7146bc279c28a6ded7b2”),“割草机”: ObjectId(“5c8dcb3a7f1b20386577d4bc”),“已创建”: ISODate(“2019-03-17T05:02:23.723Z”),“__v”:0}

myc集合
中,
mowner
name
都是集合的平面字段。因此,您需要将查询更改为:-

db.myc.find({"name":"thename"})
db.myc.find({"mowner": ObjectId("5c8dcb3a7f1b20386577d4bc")})

如果您使用的是mongoose,正如标签所说,您希望用对象ID填充字段,您的查询应该是
db.myc.find({“mowner”:Objectid(“5c8dcb3a7f1b20386577d4bc”)
@AnthonyWinzlet在我这方面不起作用。(仍然不返回任何内容)我拼错了ObjectId。再试一次。它应该work@HarisBouchlis我觉得它还是应该有回报的<代码>填充只填充一个字段。我的查询仍应返回对象
myc
(未填充
mowner
)。对吗?我尝试了填充,但仍然没有返回任何结果。