我有一个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对象的记录。
我该如何查询?
答案 0 :(得分:0)
$ where是一个常规的JavaScript语句,所以你应该使用双等号来比较值:
db.getCollection('accdetails').find({$where:"this.bankDetails.length == 1"}).sort({$natural:-1})
您还需要使用this
你也可以使用$size,在这种情况下会更快,因为对于MongoDB需要处理JavaScript表达式(docs)的$,所以应该尽可能避免:
db.getCollection('accdetails').find({ bankDetails: { $size: 1 } }).sort({$natural:-1})
编辑:
如果您希望bankDetails
仅在accountData
缺失db.getCollection('accdetails').find({ 'bankDetails.accountdata': { $exists: false } }).sort({$natural:-1})
时使用$exists运营商:
$data=@"
EMPID;JOBTITLE
123;Customer Service Rep
456;Customer Service Rep
789;Customer Service Rep
213;General Clerk
234;General Clerk
"@
$yourarray=$data | ConvertFrom-Csv -Delimiter ';'
#if you considere your data into $yourarray
$Rank=0;
$yourarray | group JOBTITLE | %{$Rank++; $_.Name, $_.Group.EMPID | out-file "c:\temp\File_$Rank.txt"}