Javascript Node.js+;猫鼬集域
我正在尝试更新模式中的几乎所有字段,除了_id和__v,以下是迄今为止的代码:Javascript Node.js+;猫鼬集域,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试更新模式中的几乎所有字段,除了_id和__v,以下是迄今为止的代码: for (var field in SchemaTarget.schema.paths) { if ((field !== '_id') && (field !== '__v')) { //all fields except _id and __v } } 现在,我如何设置例如:doc.field=something?我也看到了:doc[f
for (var field in SchemaTarget.schema.paths) {
if ((field !== '_id') && (field !== '__v')) {
//all fields except _id and __v
}
}
现在,我如何设置例如:doc.field=something代码>?我也看到了:doc[field]=something
,有什么区别
doc.field=something
它是访问对象属性的点表示法。“field”必须是有效的JavaScript标识符,即字母数字字符序列,还包括下划线(“_”)和美元符号($”),不能以数字开头。例如,object.$1有效,而object.1无效
doc[field] = something
它是访问对象属性的括号表示法。“field”是字符串。字符串不必是有效的标识符;它可以有任何值,例如“1foo”、“!bar!”,甚至是“”(空格)
要详细了解这些,请看一看。javascript和Mongoose在使用属性或哈希访问器方面没有区别
Mongoose使用较新的“get”magic属性,详细描述如下:
如果查看代码,您可以看到:
谢谢你的解释。实际上,我还有一个问题,在我的代码中,我正在打印doc.field.field2
和doc['field.field2']
,它们有不同的值,这正常吗?两个字段的值不应该相同吗?在括号符号中,必须使用doc['field']['field2']