就地更改Mongodb查询结果[重复]
Posted
技术标签:
【中文标题】就地更改Mongodb查询结果[重复]【英文标题】:Change Mongodb query result in place [duplicate] 【发布时间】:2014-09-21 21:51:03 【问题描述】:Restaurant 是 Mongoose 模型。我试图改变一些东西,但它不起作用:
Restaurant.find(, function(err, results)
for (var i = 0; i < results.length; i++)
delete results[i].__v;
我认为results[i]
是一个模型对象。我试图用以下内容检查属性描述符,上面写着undefined
:
console.log(JSON.stringify(Object.getOwnPropertyDescriptor(results[i], '__v')));
为什么删除对象不起作用?我怎么看不到属性描述符?
编辑: 所以这是一个 Mongoose 文档。但是在 javascript 的说法中,像 Mongoose 文档这样的对象可以基于 Javascript 对象以外的其他东西吗?一些基于内部 C 代码或其他东西的包装器?
【问题讨论】:
【参考方案1】:results
不是 Javascript 对象,因此您不能使用 remove
你可以用results.toObject()
doc在Javascript对象中转换
或者你可以这样做
Restaurant.find(,lean:true
doc
然后你就可以delete results[i].__v;
【讨论】:
如果不是JS对象实现的,是什么? 我是Mongoose Document 启用了精简选项的查询返回的文档是纯 JavaScript 对象,而不是 MongooseDocuments。 是的,谢谢你,我明白了。尽管用 Javascript 的说法,如果 Mongoose Document 不是一个 JS 对象,它又是什么对象呢?据我所知,JS 中的每个对象都是一种 JS 对象。你怎么做的东西不是? lean:true 不起作用。它仍然不允许我添加或删除字段。以上是关于就地更改Mongodb查询结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章