如何在MongoDB查询中使用带有字符(连字符、句点和冒号)的字段名?
我有这样一个文档:如何在MongoDB查询中使用带有字符(连字符、句点和冒号)的字段名?,mongodb,Mongodb,我有这样一个文档:{u id:0,x:{y:{“15-8:6.1”:200}}} 我想用下面这样的东西,可能吗 var fld = "x.y.15-8:6.1"; db.test.findOne( { fld : 200 } db.test.updateOne( { _id: 0 }, { $set : { fld : 999 } } ) 我已经搜索了一点,大部分都无法完成。我不确定这是否是特定于mongo的,但使用JavaScript方法,因为findOne函数需要一个对象,您可以按如下方
{u id:0,x:{y:{“15-8:6.1”:200}}}
我想用下面这样的东西,可能吗
var fld = "x.y.15-8:6.1";
db.test.findOne( { fld : 200 }
db.test.updateOne( { _id: 0 }, { $set : { fld : 999 } } )
我已经搜索了一点,大部分都无法完成。我不确定这是否是特定于mongo的,但使用JavaScript方法,因为
findOne
函数需要一个对象,您可以按如下方式构造它:
var fldName = "x.y.15-8:6.1";
var query = {};
query[fldName] = 200;
db.test.findOne(query);
我建议您对实际使用的字段名进行一些合理性检查。由于这是一个动态查询,您可能不会更新所需的字段。有适当的保护措施来确保(例如)
fldName
不是空的,或者它的值是预期的格式,这将降低无意中重写某些内容的风险 我不确定这是否是特定于mongo的,但使用JavaScript方法,因为findOne
函数需要一个对象,您可以按如下方式构造它:
var fldName = "x.y.15-8:6.1";
var query = {};
query[fldName] = 200;
db.test.findOne(query);
我建议您对实际使用的字段名进行一些合理性检查。由于这是一个动态查询,您可能不会更新所需的字段。有适当的保护措施来确保(例如)
fldName
不是空的,或者它的值是预期的格式,这将降低无意中重写某些内容的风险 我认为这是办不到的。From:“MongoDB查询语言不能总是有意义地表达对字段名包含这些字符的文档的查询。在查询语言中添加支持之前,不建议使用$and.in字段名,官方MongoDB驱动程序也不支持它。”我认为这是不可能做到的。From:“MongoDB查询语言无法始终有意义地表达对字段名包含这些字符的文档的查询。在查询语言中添加支持之前,不建议使用$and.in字段名,官方MongoDB驱动程序也不支持使用$and.in字段名”