Mongo 根据长度过滤字段的命令
Mongo Command to filter a field based on its length
我有一个 mongo 集合,我试图在其中过滤具有长度为 1
的特定字段的所有记录
我正在尝试使用以下命令,但出现以下错误,有人可以帮忙吗
db.getCollection('accdetails').find({$where:"bankDetails.length = 1"}).sort({$natural:-1})
错误如下
Error: error: {
"ok" : 0,
"errmsg" : "ReferenceError: bankDetails is not defined :\n_funcs5@:1:24\n",
"code" : 139
}
但是我的对象中有 bankDetails 字段
** 编辑更精确*
下面是我的记录
{
"id" : "123",
"bankDetails" : {
"bankdata" : {
"banknum" : {}
},
"accountdata" : {
"accnum" : {}
}
}
}
对于某些记录,accountdata 丢失,所以我想查看记录中没有 accountdata 对象的记录。
如何查询?
$where 是一个常规的 JavaScript 语句,因此您应该使用双等号来比较值:
db.getCollection('accdetails').find({$where:"this.bankDetails.length == 1"}).sort({$natural:-1})
您还需要使用 this
.
来引用当前文档
您也可以使用$size which will be faster in this case, because for $where MongoDB needs to process your JavaScript expression (docs),因此应尽可能避免使用:
db.getCollection('accdetails').find({ bankDetails: { $size: 1 } }).sort({$natural:-1})
编辑:
如果您只想在缺少 accountData
的地方获得 bankDetails
,您应该使用 $exists 运算符:
db.getCollection('accdetails').find({ 'bankDetails.accountdata': { $exists: false } }).sort({$natural:-1})
我有一个 mongo 集合,我试图在其中过滤具有长度为 1
的特定字段的所有记录我正在尝试使用以下命令,但出现以下错误,有人可以帮忙吗
db.getCollection('accdetails').find({$where:"bankDetails.length = 1"}).sort({$natural:-1})
错误如下
Error: error: {
"ok" : 0,
"errmsg" : "ReferenceError: bankDetails is not defined :\n_funcs5@:1:24\n",
"code" : 139
}
但是我的对象中有 bankDetails 字段
** 编辑更精确* 下面是我的记录
{
"id" : "123",
"bankDetails" : {
"bankdata" : {
"banknum" : {}
},
"accountdata" : {
"accnum" : {}
}
}
}
对于某些记录,accountdata 丢失,所以我想查看记录中没有 accountdata 对象的记录。
如何查询?
$where 是一个常规的 JavaScript 语句,因此您应该使用双等号来比较值:
db.getCollection('accdetails').find({$where:"this.bankDetails.length == 1"}).sort({$natural:-1})
您还需要使用 this
.
您也可以使用$size which will be faster in this case, because for $where MongoDB needs to process your JavaScript expression (docs),因此应尽可能避免使用:
db.getCollection('accdetails').find({ bankDetails: { $size: 1 } }).sort({$natural:-1})
编辑:
如果您只想在缺少 accountData
的地方获得 bankDetails
,您应该使用 $exists 运算符:
db.getCollection('accdetails').find({ 'bankDetails.accountdata': { $exists: false } }).sort({$natural:-1})