首页 > 解决方案 > 在 MongoDB Compass 中使用 ObjectID 的问题

问题描述

我正在学习使用 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,欢迎任何帮助。谢谢

标签: mongodbmongodb-querymongo-shellobjectid

解决方案


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

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

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

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


推荐阅读