即使存在,Mongo也不返回文件
Posted
技术标签:
【中文标题】即使存在,Mongo也不返回文件【英文标题】:Mongo not returning document even though it exists 【发布时间】:2019-08-08 03:25:55 【问题描述】:所以我进入了 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")
最后两个查询都没有返回任何内容,即使我认为我的语法正确并且它确实存在。知道为什么吗?
【问题讨论】:
如果您使用的是猫鼬,正如标签所说,您希望使用对象 ID ***.com/questions/38051977/… 填充字段 您的查询应该是db.myc.find("mowner": Objectid("5c8dcb3a7f1b20386577d4bc"))
@AnthonyWinzlet 对我不起作用。 (仍然什么都不返回)
我拼错了 ObjectId。再试一次。它应该工作
@HarisBouchlis 我觉得它仍然应该返回一些东西。 populate
只是填充一个字段。我的查询仍应返回对象myc
(没有填充mowner
)。正确的?我尝试了填充但仍然没有返回任何内容。
【参考方案1】:
db.myc.find()
"_id" : ObjectId("5c8dd1c7b350e73a6bc7cf50"), "name" : "mfirst", “所有者”:ObjectId(“5c8d7146bc279c28a6ded7b2”),“mowner”: ObjectId(“5c8dcb3a7f1b20386577d4bc”),“创建”: ISODate("2019-03-17T04:49:11.194Z"), "__v" : 0
"_id" : ObjectId("5c8dd4dfb547843bdee5b9bd"), "name" : "mlast", "theowner" : ObjectId(“5c8d7146bc279c28a6ded7b2”),“割草机”: ObjectId(“5c8dcb3a7f1b20386577d4bc”),“创建”: ISODate("2019-03-17T05:02:23.723Z"), "__v" : 0
在myc collection
、mowner
和name
中,它们都是集合的平面字段。因此,您需要将查询更改为:-
db.myc.find("name":"thename")
db.myc.find("mowner": ObjectId("5c8dcb3a7f1b20386577d4bc"))
【讨论】:
【参考方案2】:试试:
db.myc.find("name":"thename")
db.myc.find("mowner": ObjectId("5c8dcb3a7f1b20386577d4bc"))
【讨论】:
以上是关于即使存在,Mongo也不返回文件的主要内容,如果未能解决你的问题,请参考以下文章
Query.getResultList() 即使sql表有行也不返回结果