假設有以下類型的MongoDB文檔;如何在MongoDB中通過對象數組進行搜索,評分和排序?
'標籤'
[
{
_id:1,
name:[ 'C#', 'C#.NET', 'csharp' ]
},
_id:2,
name:[ '.NET', '.NET Framework', 'dotnet framework' ]
},
_id:3,
name:[ 'javascript', 'js' ]
}
]
'帖子'
[
{
_id: 1,
contributer: { first: 'XXX', last: '-' },
tags: [ { name: 'C#', tag_id: '1' }, { name: '.NET Framework', tag_id: '2' } ]
},
{
_id: 2,
contributer: { first: 'YYY', last: '-' },
tags: [ { name: 'javascript', tag_id: '3' } ]
},
{
_id: 3,
contributer: { first: 'XXX', last: '-' },
tags: [ { name: '.NET Framework', tag_id: '2' } ]
}]
我想通過多個標籤,如搜索;
{
_ids: [1 ,2 ]
}
其中有超過100多萬份文檔後文件
(而且還在不斷增加中)和結果排序有關irrelivant。
我正在尋找先進的解決方案,通過用現有的一個和其他解決方案(如map-reduce)和最佳搜索查詢替換更好的文檔結構以獲得緊固件結果。
預期的結果是;
'結果'
[
{
_id: 1,
contributer: { first: 'XXX', last: '-' },
tags: [ { name: 'C#', tag_id: '1' }, { name: '.NET Framework', tag_id: '2' } ]
},
{
_id: 3,
contributer: { first: 'XXX', last: '-' },
tags: [ { name: '.NET Framework', tag_id: '2' } ]
}]
我試過下面的代碼片(多$ elemmatch)爲止;
db.posts.find(
{
tags: {
$elemMatch: {
tag_id: "1", "2",
},
$elemMatch: {
tag_id: "1",
},
}
}
)
但不知道是否唯一和最好的解決方案。您可以包含MongoDB或C#驅動程序代碼。謝謝你的建議!
到目前爲止您嘗試過什麼? –
你好,我編輯了這個問題並添加了代碼片。謝謝。 – Ayberk