mongoDB集合包含以下数据
db.stack.find()
{ "_id" : "8GieRu" }
_id不是12字节的单个字符串,
根据[ObjectID] [1]的MongoDB文档, id(字符串) - 可以是24字节的十六进制字符串,12字节的二进制字符串或数字。
使用Mongoose,可以使用此Json
访问此集合{"_id" : new mongoose.Types.ObjectId("8GieRu")}
并抛出以下错误
/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35
throw new Error("Argument passed in must be a single String of 12 bytes or
^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
at new ObjectID (/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35:11)
[1]: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
Mongoose严格检查固定长度的ObjectId,如何使用给定长度的mongoose传递Object_id
答案 0 :(得分:12)
你在这里混合了两个概念。
虽然“_id”可以有任何值(即使像{firstName:'Foo',lastName:'Simpson'}
这样的子文档,“ObjectId”也有一组固定的类型,但有一些限制,因为错误信息正确地说明了。
所以你的陈述应该是
{'_id':'putWhatEverYouWantHere'}
答案 1 :(得分:5)
我在路由器订单中遇到了问题:
app.get('/jobs', controllers.jobs.getAllJobs);
app.get('/jobs/karriere', controllers.jobs.getAllJobsXML);
app.get('/jobs/:id', controllers.jobs.getJob);
app.get('/jobs/:id/xml', controllers.jobs.getJobXML);
我在 / jobs /:id之后定义了/ jobs / karriere ,因此应用程序认为“karriere”是ObjectID并返回错误。上面的代码是工作代码。
答案 2 :(得分:1)
确保您在客户端和服务器端使用的方法匹配。如果您有例如此错误也会显示{}从客户端发送POST
,服务器端需要MainWindow
。
答案 3 :(得分:0)
我遇到了同样的问题,但在RND之后。我确定自己传递了错误的{Id:Undefined},因此出现了问题,因此请首先检查您在URL中传递的ID。
Error = "http://localhost:4000/api/deleteBook/Undefined"
Right = "http://localhost:4000/api/deleteBook/5bb9e79df82c0151fc0cd5c8"
答案 4 :(得分:0)
您通过了
find /homee -type f -not -path '/\.*' -exec du -hs {} + |sort -r -n -k7 |sed 's/.*\///' | nl
如果未定义ObjectID,则会出现此错误。
答案 5 :(得分:0)
就我而言,我正在使用猫鼬。而且我无法使用以下查询:
{ "_id" : "8GieRu" }
直到我碰到我的模型文件并指定这行counter.model.js
var CounterSchema = new Schema({
_id: String,
sequence_value: Number
})
请注意,我在模型中将数据类型指定为_id的字符串。 而且,在我的查询中,我不需要将字符串转换为ObjectId。
查询现在就像过滤器一样简单
{ "_id" : "8GieRu" }