【问题标题】:Problem using ObjectID in MongoDB Compass在 MongoDB Compass 中使用 ObjectID 的问题
【发布时间】:2020-11-03 00:23:10
【问题描述】:

我正在学习使用 MongoDB,我在 cloud.mongodb.com 的云中创建了一个集群,并使用 MongoDb Compass vs 1.22.1 连接到它。 我正在尝试学习一些基本命令,并尝试使用 find() 命令从我的集合中选择项目以按 id 进行过滤。

我已经尝试过我所看到的到处都引用的内容,例如:

db.recipes.find({_id: ObjectID("5e877cba20a4f574c0aa56da")});

db.recipes.find({'_id': ObjectID("5e877cba20a4f574c0aa56da")});

我总是得到输出:

ReferenceError: ObjectID is not defined
    at evalmachine.<anonymous>:5:10
    at evalmachine.<anonymous>:7:3
    at Script.runInContext (vm.js:134:20)
    at Object.runInContext (vm.js:297:6)
    at ElectronInterpreterEnvironment.sloppyEval (C:\Users\lfili\AppData\Local\MongoDBCompass\app-1.22.1\resources\app.asar\node_modules\@mongodb-js\compass-shell\lib\index.js:140827:28)
    at Interpreter.<anonymous> (C:\Users\lfili\AppData\Local\MongoDBCompass\app-1.22.1\resources\app.asar\node_modules\@mongodb-js\compass-shell\lib\index.js:210735:41)
    at step (C:\Users\lfili\AppData\Local\MongoDBCompass\app-1.22.1\resources\app.asar\node_modules\@mongodb-js\compass-shell\lib\index.js:210685:19)
    at Object.next (C:\Users\lfili\AppData\Local\MongoDBCompass\app-1.22.1\resources\app.asar\node_modules\@mongodb-js\compass-shell\lib\index.js:210615:14)
    at C:\Users\lfili\AppData\Local\MongoDBCompass\app-1.22.1\resources\app.asar\node_modules\@mongodb-js\compass-shell\lib\index.js:210587:67
    at new Promise (<anonymous>)

如果我不使用 ObjectID,比如:

db.recipes.find({'_id':"5e877cba20a4f574c0aa56da"});

我没有收到错误,但没有输出,因为我猜 _id 不是“5e877cba20a4f574c0aa56da”而是 ObjectID(“5e877cba20a4f574c0aa56da”)。

我不知道为什么不能在 Compass MongoSH 中使用 ObjectID,欢迎任何帮助。 谢谢

【问题讨论】:

  • ObjectId 不是 ObjectID.
  • 谢谢。我试过了,效果很好,很奇怪,因为 >_MongoSH 中的输出格式为 _id: ObjectID("5e877cba20a4f574c0aa56da"),所以我只是从那里复制了它。

标签: mongodb mongodb-query mongo-shell objectid


【解决方案1】:

对于较新的版本,您必须使用

db.recipes.find({_id: ObjectId("5e877cba20a4f574c0aa56da")});

如果您使用的是 1.10.x 之前的旧版本,您可以使用:

db.recipes.find({"_id":{"$oid":"5e877cba20a4f574c0aa56da"}});

【讨论】:

  • 谢谢!我使用的是较新版本的格式,prasad_ 指出的问题是我使用的是 ObjectID 而不是 ObjectId,因为我从控制台的输出中复制了它,它输出为 ObjectID 而不是 ObjectId。
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 2018-12-24
  • 2017-09-17
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
相关资源
最近更新 更多