假设这是我的用户集合中的一项:
{
"_id" : "5545f4c4d0dd52c355a99fbe",
"name" : "Dollie James",
"device" : "iOS",
"gender" : "Female",
"wallet" : [
{
"store" : "All Saints",
"balance" : "$196.11",
"date" : "2014-02-22T22:09:38 -10:00",
"tags" : [
"Tshirt",
"Summer"
]
},
{
"store" : "Nike",
"balance" : "$367.76",
"date" : "2014-04-18T14:44:30 -10:00",
"tags" : [
"Shoes"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
此记录是从以下查询返回的:
db.users.findOne({$and:[{"wallet.tags" : "Tshirt"}, {"wallet.store":"Nike"}]})
然而,这不是我想要的结果,因为 Tshirt 和 Nike 不在钱包数组中的同一个对象中。看来 mongo 正在对整个数组进行查询。如何定位此查询以仅返回数组中同一对象中的两个条件?
我有以下DB列调用messages列:
thread_id, sender_id, receiver_id, date
Run Code Online (Sandbox Code Playgroud)
例:
+-----------+------------+-------------+-------------+
| thread_id | sender_id | receiver_id | date |
+----------------------+-----------+-----------------+
| 1 | 1 | 2 | 11/06/2015 |
| 1 | 2 | 1 | 14/06/2015 |
| 1 | 1 | 2 | 14/06/2015 |
| 1 | 2 | 1 | 20/06/2015 |
| 2 | 1 | 3 | 12/06/2015 |
| 3 | 4 | 2 | 19/06/2015 |
| 3 | 2 | 2 | …Run Code Online (Sandbox Code Playgroud)