mongodb mongoose find()返回与存储在集合中的不同的_id

mmvthczy  于 2023-06-22  发布在  Go
关注(0)|答案(1)|浏览(165)

最近在使用MongoDB时遇到了一些非常奇怪的事情。
当我查询一个文档的集合时,它似乎为查询的文档创建了一个new_id,而不返回存储在DB中的_id。
例如:
在我的数据库中,我创建了一个名为user_types的集合。它有两个文件:

  1. {
  2. "_id": {
  3. "$oid": "6480989a8e96e5da4f9c8488"
  4. },
  5. "type": "User"
  6. },
  7. {
  8. "_id": {
  9. "$oid": "6480986b8e96e5da4f9c8487"
  10. },
  11. "type": "Admin"
  12. }

我定义了一个user_types的Schema,如下所示:

  1. const user_types_Schema = new Schema({
  2. type: String
  3. }, {versionKey: false});

然后从中创建一个模型,并将其连接到数据库中的user_types集合:

  1. const UserType = mongoose.model('UserType', user_types_Schema, 'user_types');

现在,当我尝试使用mongoose和这样的模型进行查询时:

  1. const query = await UserType.find({type: 'User'});

返回:{ type: 'User', _id: new ObjectId("6492e2b6a618d51eeb7e63a9")
请注意,此查询返回的_id与数据库中的不同。
我做错什么了吗?
有没有一种方法可以获取存储在数据库中的original_id?

bvjxkvbb

bvjxkvbb1#

所以问题出在你正在使用的查询上。到目前为止,您的查询是创建一个新文档,而不是查询数据库。
因此,请更新查询以包含find方法。

  1. const query = await UserType.find({type: 'User'})

相关问题