【问题标题】:Mongo not returning document even though it exists即使存在,Mongo也不返回文件
【发布时间】: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 stackoverflow.com/questions/38051977/… 填充字段
  • 您的查询应该是db.myc.find({"mowner": Objectid("5c8dcb3a7f1b20386577d4bc")})
  • @AnthonyWinzlet 对我不起作用。 (仍然什么都不返回)
  • 我拼错了 ObjectId。再试一次。它应该工作
  • @HarisBouchlis 我觉得它仍然应该返回一些东西。 populate 只是填充一个字段。我的查询仍应返回对象myc(没有填充mowner)。正确的?我尝试了填充但仍然没有返回任何内容。

标签: mongodb mongoose mongodb-query


【解决方案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 collectionmownername 中,它们都是集合的平面字段。因此,您需要将查询更改为:-

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

【讨论】:

    【解决方案2】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多