mongoDB:按嵌入值查找

jos*_*011 2 arrays mongodb

我在使用 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'} 
});
Run Code Online (Sandbox Code Playgroud)

现在我想找到任何知道任何语言“非常好”的编码员......如何?

Sal*_*ali 5

你找不到它,因为它是不可能的。没有任何搜索运算符适用于您提供的架构。

最简单的解决方法是稍微更改架构:

db.coders.save( {
'name': 'John', 
'languages' : [ { n: 'php', v: 'bad'},{n:'java', v: 'good'},{n : 'brainfuck', v: 'very bad'}] 
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以使用以下查询来查询数据:

db.coders.find({'languages.v' : 'good'})
Run Code Online (Sandbox Code Playgroud)