0
我的收藏是像蒙戈DB,怎麼辦找到一個字段包含一個整數
Name : "name" Serial:"100" Name : "name1" Serial:"4200" Name : "name2" Serial:"1200"
我需要找到包含Name
包含價值"name"
或Serial
包含"200"
感謝文件很多你的指導方針在這裏。
我的收藏是像蒙戈DB,怎麼辦找到一個字段包含一個整數
Name : "name" Serial:"100" Name : "name1" Serial:"4200" Name : "name2" Serial:"1200"
我需要找到包含Name
包含價值"name"
或Serial
包含"200"
感謝文件很多你的指導方針在這裏。
,如果你有這樣的數據:
{ "_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會做全表掃描。
希望我正確理解你的問題;)。
它沒有給我一個更好的解決方案.An例如如下> db.Legacy_details.findOne()--------收集 { 「_id」:物件( 「573d8f5eeb55cc97e9c07aa5」), 「陣「:290103590, 」設備「: 」10000000c987856d「, 」主機「: 」「 } > db.Legacy_details.find({」 陣列 「:」 290103590 「}) > db.Legacy_details.find({」 Array「:/ 290103590 /}) > – MRz
對不起,但我不明白你的問題。如果你想用字符串的一部分查找然後使用正則表達式,我知道你知道它。如果你需要分解,那就像我一樣使用'$或'。 – evilive
嗯,我想我知道了,如果不是,請糾正我。你有一個int字段,你需要與它部分匹配?好的,我可以建議你使用聚合函數。首先,您應該將int值轉換爲字符串,然後將其與您的查詢進行匹配。要將ints轉換爲字符串,只需使用修飾符'$ toLower'。 – evilive