我的收藏就像
Name : "name" Serial:"100" Name : "name1" Serial:"4200" Name : "name2" Serial:"1200"
我需要查找包含Name
的文档,其中包含值"name"
或Serial
,其中包含"200"
非常感谢您的指导。
答案 0 :(得分:0)
如果你有这样的数据:
{ "_id" : ObjectId("..."), "name" : "nameA", "serial" : 1200 }
{ "_id" : ObjectId("..."), "name" : "nameB", "serial" : 1234 }
{ "_id" : ObjectId("..."), "name" : "nameC", "serial" : 4200 }
并且您希望使用正则表达式对字段serial
进行查询,您可以进行聚合:
db.coll.aggregate(
{$project: {name: true, serial: {$toLower: '$serial'}}},
{$match: {serial: /20/}})
)
// { "_id" : ObjectId("..."), "name" : "nameA", "serial" : "1200" }
// { "_id" : ObjectId("..."), "name" : "nameC", "serial" : "4200" }
db.coll.aggregate(
{$project: {name: true, serial: {$toLower: '$serial'}}},
{$match: {serial: /12/}})
)
// { "_id" : ObjectId("..."), "name" : "nameA", "serial" : "1200" }
// { "_id" : ObjectId("..."), "name" : "nameB", "serial" : "1234" }
但这是一个黑客,我不会在我的工作中使用这种方法。也许有办法重新组织你的数据结构?
你必须知道你不能在这个查询中使用任何索引,mongo会进行全表扫描。
希望我能正确理解你的问题;)。