以下mongodb查詢未返回文檔。查詢有什麼問題?我想指定$where
以匹配數組中的元素
[編輯]上面的問題是我的方案的簡化版本。我正在使用spring數據mongodb存儲庫。我想用@Query
註釋來指定查詢。希望$where
部分是簡單的比較,而不是一個完整的JavaScript函數。像
@Query (value=" { flag: true, $where: \"this.versions.version == this.defaultVersion \"}", fields = "{'versions' : 1}")
Foo getDefaultVersion();
如果$where
是不正確的語法,請建議替代方案。
db.foo.find({
flag: true,
$where: "this.versions.version == this.defaultVersion " },
{ 'versions' : 1}
});
收藏:
{
flag: true,
defaultVersion: "1.0",
versions: [
{
version: "1.0",
tags: ["abc", "def"]
},
{
version: "1.1",
tags: ["abc", "def"]
}
]
}
我想獲取「版本」從已匹配的版本defaultVersion財產版本排列子文檔。
[EDIT2]我能夠將它縮小使用$ elemMatch
db.foo.find({
flag: true,
versions: { $elemMatch : { version: '1.0' } }
},
{ 'versions' : 1}
});
在上述代替硬編碼'1.0'
,我想指定文檔的defaultVersion。不知道我該如何實現它?
你的版本是數組,並且this.versions.version會給你未定義的,如果你只想匹配第一個位置,請嘗試使用this.versions [0] .version @Jack – Sumeet
我不知道位置版本上的索引。我希望查詢遍歷所有版本,並將版本與defaultVersion進行匹配。不知道如何寫這個查詢。有什麼建議麼? –