mongo中查询Array类型的字段中元素个数

I have a MongoDB collection with documents in the following format:

{
  "_id" : ObjectId("4e8ae86d08101908e1000001"),
  "name" : ["Name"],
  "zipcode" : ["2223"]
}
{
  "_id" : ObjectId("4e8ae86d08101908e1000002"),
  "name" : ["Another ", "Name"],
  "zipcode" : ["2224"]
}

I can currently get documents that match a specific array size:

db.accommodations.find({ name : { $size : 2 }})

This correctly returns the documents with 2 elements in the name array. However, I can‘t do a $gtcommand to return all documents where the name field has an array size of greater than 2:

db.accommodations.find({ name : { $size: { $gt : 1 } }})

How can I select all documents with a name array of a size greater than one (preferably without having to modify the current data structure)?

解决办法:

1.db.accommodations.find( { $where: "this.name.length > 1" } );

2.db.accommodations.find({‘name.1‘: {$exists: true}})

说明:name.1是name字段(Array类型)的第二个索引(从0开始)

时间: 2024-10-13 02:32:57

mongo中查询Array类型的字段中元素个数的相关文章

eImage(仅两行代码实现输出从数据库中查询到的二进制字段)标签

功能: 专门用于向浏览器输出从数据库中查询到的二进制字段.支持通用的几十种文件类型 别名为edoc 使用方法: <chtml><eimage id=书包名type=类型>key</eimage></chtml>或 <chtml><edocid==书包名 type=类型>key</edoc></chtml> ·        id:书包名.ESql标签返回的书包名称 ·        type:类型.输出文件类型

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE(&#39;{0}&#39;,&#39;YYYY-MM-DD&#39;))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字段','YYYY-MM-DD'))转换.如下: string.Format("insert into tablename (TIME) values(TO_DATE('{0}','YYYY-MM-DD'))",now) 错误写法: string.Format("insert in

理解javascript中的Array类型

引子: 从事前端开发有段时间了,个人观点:想在前端开发这条路上走的更远,不仅要学好HTML&HTML5.CSS&CSS3,最重要的就是要学好javascript了.所以打好javascript基础是非常有必要,今天就平时所用的javascript中的数组Array类型做个整理.本人前端初学者,如果以下内容对您有帮助的话本人也非常欣慰,如果写的不好,请提出您的见解,共享下您在学习js中的宝贵经验,谢谢! Array类型是js中非常常用的数据类型了,这里就不脑补了,至于什么是数组类型,请绕道w

sqlserver中对时间类型的字段转换

获取当前日期利用 convert 来转换成我们需要的datetime格式. select CONVERT(varchar(12) , getdate(), 112 ) 20040912------------------------------------------------------------ select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12-----------------------------------------

Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:

一:查询字符串类型的字段的值不为空的SQL: [sql] view plaincopy select * from TB_CMS_FLGTINFO_A t where (t.fsta is not null and t.fsta <>' '); 主:上面的TB_CMS_FLGTINFO_A是表名,fsta是表中的字段 二:查询字符串类型的字段的值为空的SQL: [sql] view plaincopy select * from TB_CMS_FLGTINFO_A t where (t.fst

Mysql中把varchar类型的字段转化为tinyint类型的字段

因为之前不知道tinyint类型的用法,所以将一些状态属性字段类型设置成了varchar类型,然后用"是"和"否"来判断状态 后来了解到了tinyint,就想试着用一下,但是要把varchar类型的字段转化为tinyint类型的字段,探索方法如下: 1.将表里面的所有"是"或者"否"改成 0,因为当前字段类型是varchar,所以这一步更改是没有问题的 2.运行下面的SQL语句 ALTER TABLE 表名 MODIFY CO

MySQL数据库中查询数据库表、字段总数量,查询数据总量

最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 1 #查询MySQL服务中数据库表数据量 2 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 3 #查询指定数据库表数量 4 SELECT COUNT(*) TABLES, table_schema FROM infor

在JSP中获取oracle中的时间戳类型的字段并显示

在oracle中有一种特殊的时间显示类型——Timestamp时间戳 通常我们将当前时间转化为时间戳的语法如下: select cast (sysdate as timestamp ) from dual 在一个JSP页面中,需要获取一个时间戳字段,以显示在页面上 首先,是对JDBC的操作 sql语句用: select * from testlibrary 假设testlibrary中的modifydate字段的类型为TIMESTAMP(6) Testlibrary tlb= new Testl

在同一个表中将varchar2类型的数据转存到blob类型的字段中

用一条修改语句即可:update t_content set f_body=rawtohex(f_check) where f_type in (0,4)此处须用rawtohex()函数将f_check转成16进制,不然会报ORA-01465: invalid hex number(ORA-01465:无效的十六进制数字)的错误.备注:f_body为blob型字段,f_check为varchar2型这时在页面取 f_body时直接用getString("f_body")即可.