我需要在JSON类型的请求体中发送一个mongo查询,例如:
{ _id : { $gt : ObjectId("575d0c22964ddb3b6ba41bed") } }
(获取比id'ed记录更晚插入的记录)
在节点服务器端,我用body-parser中间件表达。除非引用所有内容,否则它不会解析请求主体JSON。例如。以上必须是:
{ "_id" : { "$gt" : "ObjectId(\"575d0c22964ddb3b6ba41bed\")" } }
db使用所有引号运行查询并且不返回任何内容。
如何将ObjectId()
作为函数传递给mongodb
而不重新解析整个请求正文并剥离引号?
我正在使用Chrome中的postman扩展程序进行测试,并将请求发送到REST url: /api/:obj_type/list
。
整个请求正文用作查询。
答案 0 :(得分:1)
您只会在客户端和服务器中传递字符串值,直到请求成为数据库,此时您将使其成为具有相同值的新ObjectID以传递到数据库中。传递字符串更容易,因为所有客户端/服务器都知道如何处理字符串vs ObjectID - 同样在URL中传递ObjectID也是一个问题。 - 回答关于如何将ObjectID()传递给Monogdb而不重新解析的问题。你真的不会,除非我误解了背景
但是将ID作为字符串传递,因此它就像var stringId = "507f1f77bcf86cd799439011"
,当你要进行查询时,你会做col.find({_id: new ObjectId(stringId)}).toArray(function(err,results){});