0
由於Mongo是無模式的,因此已知文檔可以具有不同的鍵。如果字段名稱包含('something'),則mongodb搜索
我處於一種情況,我需要搜索字段名稱[即鍵名]而不是它的價值。
我在很多地方閱讀過它,發現可以使用$where
,我意識到這並不高效;但沒關係!因爲這將是生產前的一次調查。
所以我試圖建立查詢,但我未能產生預期的結果,因爲我知道密鑰在數據庫中可用。
我的JS代碼:
function kName(){
for (var k in obj){
if (k.startsWith('gold')){
return obj
}
}
}
所以我用它爲以下幾點:
db.nodes.find({$where: kName})
,但我沒能返回有效的結果,因爲我知道有一個「黃金」字段名
然後我試過了:
db.nodes.find({$where: kName()})
再次失敗。
然後我修改的功能:
function kName(obj){
for (var k in obj){
if(k.startsWith('gold')){
return obj
}
}
}
,並再次我試圖 db.nodes.find({$其中:kName()}) 和失敗。
然後試圖
db.nodes.find({$where: kName(obj)})
所以我的問題是:
我如何用我自己的JS功能,利用$其中MongoDB的條款找到一個字段名稱存在。
https://docs.mongodb.org/manual/reference/operator/query/exists/#exists'$ exists'不支持字段名稱。它只會搜索文檔是否存在。我嘗試了你的建議,但沒有得到預期的結果。感謝您的回覆 – stackunderflow
我不確定您是否覺得它不檢查字段是否存在。看看有什麼文件說**當布爾值爲真時,$ exists與包含該字段的文檔匹配** – Saleem
是@Saleem。當您在文檔中查找字段時,可以使用'$ exists'。我的情況是,'kName'是JS函數(不是鍵名),它應該檢查每個字段名稱,如果它以(「字符串在這裏」)開頭。所以我認爲'$ exists'不能用於JS函數,但與文檔的字段(鍵)。我也試過沒有成功。請糾正我,如果我失去了一些東西..再次感謝您寶貴的時間 – stackunderflow