Collection.findOne({_ id:“stringidsdfdsfdsfds”})返回undefined

时间:2017-10-04 07:35:12

标签: mongodb meteor meteor-react

我不是Meteor的新手,但因为从事其他项目而离开了几个星期。

我现在正在使用React处理Meteor项目。

当我这样做Collection.find({}).fetch()时,它会返回:

[
  {
       "_id": { "_str": "59d3b91d80f4f5eeb0162634" },
       "title": "My first Post",
       "content": "This is the body of the pst"
  }
]

唯一奇怪的是_id字段。

但是,当我Collection.findOne({_id: "59d3b91d80f4f5eeb0162634" })时,它会返回undefined

如何使用.findOne()字符串作为查询参数来执行_id

1 个答案:

答案 0 :(得分:2)

您所看到的内容_id的值不是JSON对象,而是Mongo ObjectID类型的字符串表示形式,这就是为什么您的.findOne()无法找到它。

您应该像这样搜索:

const _id = new Meteor.Collection.ObjectID('59d3b91d80f4f5eeb0162634');
Collection.findOne({ _id }); // same as { _id: _id }

默认情况下,Meteor uses STRING method of _id generation,所以似乎这个特定文档已经以另一种方式插入到集合中。