我有一些mongoDB的问题,我寻找答案,但我找不到任何东西 这解决了我的问题......
db.coders.save( {
'name': 'John',
'languages' : { 'php':'bad','java':'good','brainfuck':'very bad'}
});
db.coders.save( {
'name': 'Sarah',
'languages' : { 'php':'good','java':'bad','brainfuck':'very bad'}
});
db.coders.save( {
'name': 'Tom',
'languages' : { 'php':'very good','java':'good','brainfuck':'bad'}
});
现在我想找到任何知道任何语言'非常好'的编码员......怎么样?
答案 0 :(得分:4)
你找不到它,因为这是不可能的。所有搜索运算符都不适用于您提供的架构。
最简单的解决方法是稍微更改架构:
db.coders.save( {
'name': 'John',
'languages' : [ { n: 'php', v: 'bad'},{n:'java', v: 'good'},{n : 'brainfuck', v: 'very bad'}]
});
在这种情况下,您可以使用以下查询查询数据:
db.coders.find({'languages.v' : 'good'})
答案 1 :(得分:2)
我同意萨尔瓦多的意见,更改架构更好。
但我发现你可以使用$ where运算符进行搜索。
db.coders.find({ $where : function() { for(lang in this.languages) { if (this.languages[lang] == 'very good') { return true; } } return false; }});
如文档中所指出的那样可能有点慢。