我有一个简单的结构化文档,如下所示:
"people" : [
{
"id" : "6241863",
"amount" : 5
}
],
人们可以包含不止一种元素。我设法让它工作:
db.village.findOne({"people": {"$in": [{"id": "6241863", "amount": 5}]}})
但我想忽略数量并搜索任何包含 id 为 6241863 和任何数量的人的文档。
我有一个简单的结构化文档,如下所示:
"people" : [
{
"id" : "6241863",
"amount" : 5
}
],
人们可以包含不止一种元素。我设法让它工作:
db.village.findOne({"people": {"$in": [{"id": "6241863", "amount": 5}]}})
但我想忽略数量并搜索任何包含 id 为 6241863 和任何数量的人的文档。
根据高级查询文档,您可以将数组值查询与点表示法混合使用以进入对象。这是使用您的架构的示例:
$ mongo
MongoDB shell version: 2.1.0
connecting to: test
> db.users.save({_id: 1, friends: [{id: 2, name: 'bob'}]})
> db.users.find({friends: {id: 2, name: 'bob'}})
{ "_id" : 1, "friends" : [ { "id" : 2, "name" : "bob" } ] }
> db.users.find({'friends.id': 2})
{ "_id" : 1, "friends" : [ { "id" : 2, "name" : "bob" } ] }
> db.users.find({'friends.name': 'bob'})
{ "_id" : 1, "friends" : [ { "id" : 2, "name" : "bob" } ] }
> db.users.find({'friends.name': 'ted'})
>
试试看
db.village.findOne({"people" : { "$in" : [{ "id" : "6241863" , "amount" : { "$ne" : null } }]}})