查询返回的字段显示($,$slice,$elemMatch)

来源:互联网 发布:陈冠希道歉 知乎 编辑:程序博客网 时间:2024/05/18 14:11
1.查看容器中的所有文档db.inventory.find(){ "_id" : ObjectId("5446ebddd251b112db5bf7bc"),   "item" : "ABC1",   "details" : {"model" : "14Q3","manufacturer" : "XYZ Company"},   "stock" : [ { "size" : "S", "qty" : 25 },{ "size" : "M", "qty" : 50 } ],   "category" : "clothing" }{ "_id" : ObjectId("5446ebfbd251b112db5bf7bd"),   "item" : "ABC2",   "details" : { "model" : "14Q2", "manufacturer" : "XYZ Company" },   "stock" : [ { "size" : "S", "qty" : 30 }, { "size" : "M", "qty" : 60 } ],   "category" : "clothing" }{ "_id" : ObjectId("5446ec08d251b112db5bf7be"),   "item" : "ABC3",   "details" : { "model" : "14Q4", "manufacturer" : "XYZ Company" },   "stock" : [ { "size" : "S", "qty" : 10 }, { "size" : "M", "qty" : 20 } ],   "category" : "clothing" }2.查询返回指定的字段> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 ,"stock": 1}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 }, { "size" : "M", "qty" : 50 } ] }3.数组字段查询返回的显示($slice)> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: 1}}) //返回顺数第一个元素{ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: 2}}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 }, { "size" : "M", "qty" : 50 } ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: 3}}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 }, { "size" : "M", "qty" : 50 } ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: 0}}){ "item" : "ABC1", "stock" : [ ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: -1}}) //返回倒数第一个元素{ "item" : "ABC1", "stock" : [ { "size" : "M", "qty" : 50 } ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: -2}}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 }, { "size" : "M", "qty" : 50 } ] }> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: [-1,1]}}) //$silce:[skip,limit]{ "item" : "ABC1", "stock" : [ { "size" : "M", "qty" : 50 } ] }//返回一项从倒数第一个开始返回> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: [1,1]}}) //$silce:[skip,limit]{ "item" : "ABC1", "stock" : [ { "size" : "M", "qty" : 50 } ] }//return 1 items, after skipping the first 1 items of that array.> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$slice: [-2,1]}}) //$silce:[skip,limit]{ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }//返回一项从倒数第二个开始返回4.$elemMatch在数组查询中的使用The $elemMatch operator limits the contents of an <array> field from the query results to contain only the first element matching the $elemMatch condition.//返回第一个满足条件的元素(如果有多个元素满足条件)> db.inventory.find({"item": "ABC1"},{"item":1,"_id": 0 , "stock": {$elemMatch: {"size": "S" } }}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }> db.inventory.find({},{"item":1,"_id": 0 , "stock": {$elemMatch: {"size": "S" } }}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }{ "item" : "ABC2", "stock" : [ { "size" : "S", "qty" : 30 } ] }{ "item" : "ABC3", "stock" : [ { "size" : "S", "qty" : 10 } ] }> db.inventory.find({},{"item":1,"_id": 0 , "stock": {$elemMatch: {"qty": {$gt: 20} } }}){ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }{ "item" : "ABC2", "stock" : [ { "size" : "S", "qty" : 30 } ] }{ "item" : "ABC3" }> db.inventory.find({},{"item":1,"_id": 0 , "stock": {$elemMatch: {"size": "S" } }}).sort({"stock.qty": -1}){ "item" : "ABC2", "stock" : [ { "size" : "S", "qty" : 30 } ] }{ "item" : "ABC1", "stock" : [ { "size" : "S", "qty" : 25 } ] }{ "item" : "ABC3", "stock" : [ { "size" : "S", "qty" : 10 } ] }5.$在数组查询中的使用db.collection.find( { <array>: <value> ... },                    { "<array>.$": 1 } )db.collection.find( { <array.field>: <value> ...},                    { "<array>.$": 1 } )The <array> field being limited must appear in the query document, and the <value> can be documents that contain query operator expressions> db.inventory.find({"stock.qty": {$gt: 10}},{"stock.$": 1}) //stock必须作为查询条件的字段 并且返回的只是数组中第一个满足条件的元素{ "_id" : ObjectId("5446ebddd251b112db5bf7bc"), "stock" : [ { "size" : "S", "qty" : 25 } ] }{ "_id" : ObjectId("5446ebfbd251b112db5bf7bd"), "stock" : [ { "size" : "S", "qty" : 30 } ] }{ "_id" : ObjectId("5446ec08d251b112db5bf7be"), "stock" : [ { "size" : "M", "qty" : 20 } ] }

0 0
原创粉丝点击