一:插入数据
1.直接插入
db.inventory.insert(
{
item: "ABC1",
details: {
model: "14Q3",
manufacturer: "XYZ Company"
},
stock: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ],
category: "clothing"
}
)
当数据库中如果没有inventory这个collection时,会自动创建它。
2.通过数组插入
var mydocuments =
[
{
item: "ABC2",
details: { model: "14Q3", manufacturer: "M1 Corporation" },
stock: [ { size: "M", qty: 50 } ],
category: "clothing"
},
{
item: "MNO2",
details: { model: "14Q3", manufacturer: "ABC Company" },
stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 }, { size: "L", qty: 1 } ],
category: "clothing"
},
{
item: "IJK2",
details: { model: "14Q2", manufacturer: "M5 Corporation" },
stock: [ { size: "S", qty: 5 }, { size: "L", qty: 1 } ],
category: "houseware"
}
];
db.inventory.insert( mydocuments );
3.通过Bulk插入
var bulk = db.inventory.initializeUnorderedBulkOp();
bulk.insert(
{
item: "BE10",
details: { model: "14Q2", manufacturer: "XYZ Company" },
stock: [ { size: "L", qty: 5 } ],
category: "clothing"
}
);
bulk.insert(
{
item: "ZYT1",
details: { model: "14Q1", manufacturer: "ABC Company" },
stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 } ],
category: "houseware"
}
);
bulk.execute();
二:查询
1.空查询(返回所有文档)
db.inventory.find( {} )
db.inventory.find()
2.按照值查询
db.inventory.find( { type: "snacks" } )
3.in条件查询
db.inventory.find( { type: { $in: [ 'food', 'snacks' ] } } )
4.and条件查询
db.inventory.find( { type: 'food', price: { $lt: 9.95 } } )
5.or条件查询
db.inventory.find(
{
$or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
}
)
6.and & or 条件查询
db.inventory.find(
{
type: 'food',
$or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
}
)
7.有嵌套的查询
db.inventory.find(
{
producer:
{
company: 'ABC123',
address: '123 Street'
}
}
)
db.inventory.find( { 'producer.company': 'ABC123' } )
8.数组查询
db.inventory.find( { ratings: [ 5, 8, 9 ] } )
db.inventory.find( { ratings: 5 } )
db.inventory.find( { 'ratings.0': 5 } ) //数组的第一个值匹配5
db.inventory.find( { ratings: { $elemMatch: { $gt: 5, $lt: 9 } } } ) //数组中至少一个元素 >>5 且 <<9
db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } ) //数组中有一个元素满足>>5 且 <<9 或者 有一个>>5,另一个<<9
9.嵌套的数组查询
{
_id: 100,
type: "food",
item: "xyz",
qty: 25,
price: 2.5,
ratings: [ 5, 8, 9 ],
memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}
{
_id: 101,
type: "fruit",
item: "jkl",
qty: 10,
price: 4.25,
ratings: [ 5, 9 ],
memos: [ { memo: "on time", by: "payment" }, { memo: "delayed", by: "shipping" } ]
}
db.inventory.find( { 'memos.0.by': 'shipping' } )
db.inventory.find( { 'memos.by': 'shipping' } )
db.inventory.find(
{
memos:
{
$elemMatch:
{
memo: 'on time',
by: 'shipping'
}
}
}
)
db.inventory.find(
{
'memos.memo': 'on time',
'memos.by': 'shipping'
}
)
三:修改
1.更新一个字段的值
db.inventory.update(
{ item: "MNO2" },
{
$set: {
category: "apparel",
details: { model: "14Q3", manufacturer: "XYZ Company" }
},
$currentDate: { lastModified: true }
}
)
2.更新一个嵌入的字段
db.inventory.update(
{ item: "ABC1" },
{ $set: { "details.model": "14Q2" } }
)
3.更新多个文档
db.inventory.update(
{ category: "clothing" },
{
$set: { category: "apparel" },
$currentDate: { lastModified: true }
},
{ multi: true }
)
4.更新使用upsert
db.inventory.update(
{ item: "TBD1" },
{
item: "TBD1",
details: { "model" : "14Q4", "manufacturer" : "ABC Company" },
stock: [ { "size" : "S", "qty" : 25 } ],
category: "houseware"
},
{ upsert: true }
)
四:删除
1.删除所有文档
db.inventory.remove({})
2.删除匹配条件的文档
db.inventory.remove( { type : "food" } )
3.删除一个匹配条件的文档
db.inventory.remove( { type : "food" }, 1 )
mongod CRUD
最新推荐文章于 2024-06-04 21:55:29 发布