2012-03-26 82 views
3

db.test.insert({_ ID:1,通信:[{类型: 'SMS'}]})mongodb的:搜索哈希的阵列

db.test.find() {“ _id”:1, “通信”:[{ “类型”: “SMS”}]}

好了,它的插入

db.test.find({ '通信':{式:'sms'}}) {“_id”:1,“communications”:[{“type”:“sms”}]}

好的,我可以找到它,如果它的精确匹配

db.test.update({_ ID:1},{通信:[{类型: 'SMS',CALL_ID:9878} ]}

现在我更新它使得嵌套阵列中的散列有两个密钥

.test.update({_ ID:1},{通信:[{类型: 'SMS' ,call_id:9878}]})

但我找不到它bc哈希不是完全匹配!真是没有!

db.test.find({ '通信':{类型: 'SMS'}})。COUNT() => 0

所以,如何可以做这样的一个搜索我想在数组中的某个键上匹配哪个键?

+0

查看AdaTheDev对答案的正确答案(点符号) – zeedre 2012-03-26 16:11:09

回答

2

如果我理解正确(我没有保证!),那么我认为你要找的是点符号。

db.test.find({'communications.type':'sms'}).count() 

这里是所有例子的reference on MongoDb.org

+0

哇,不能相信我错过了那个。 THanks AdaTheDev。 – zeedre 2012-03-26 16:10:07

+0

另请参见$ elemMatch操作符,这是大多数情况下更适合元素过滤的方法。 – 2012-03-26 16:25:00