我接受用户提供的看起来像MongoDB查询的JSON字符串,我想对其进行一些验证和处理,并将其作为查询发送给MongoDB。
目前,我正在进行以下操作,但它表现得很奇怪。对于嵌套键(如“parent._id”,我传递给collection.find()的对象看起来像{'parent_.id':'xyz'},对于根键,如“_id”,我传递给的对象find()看起来像{_id:'xyz'}
查询字符串可能类似于以下内容,但我无法控制它们。
{“_ id”:“12o3iu4y2134iouy”,“已提交”:“2013-11-05T15:29:32.128Z”}
{“child._id”:“12o3iu4y2134iouy”,“comment.submitted”:“2013-11-05T15:29:32.128Z”}
有关该方法的任何建议,或我的函数/算法的错误>?
function recurseForMongoKeys(qString){ for (key in qString) { if (typeof qString[key] === 'object'){ recurseForMongoKeys(qString[key]); } else { if (key.split(".").pop() === '_id') { // process leaf node key = req.coll.id(qString[key]); } } }
更新:我刚刚发现我的嵌套id(上例中的“child._id”)实际上并不是一个ObjectId,而只是我从子doc的ObjectId中使用的24位十六进制字符串。