Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

Bulk.find.hint()

在此页面上

  • 说明
  • 兼容性
  • 例子

提示

MongoDB 还提供了用于执行批量写入操作的 db.collection.bulkWrite() 方法。

Bulk.find.hint()

设置hint选项,指定索引以支持Bulk.find()

该选项可以采用索引规范文档或索引名称字符串。

如果指定不存在的索引,则操作出错。

Bulk.find.hint() 没有影响 Bulk.find.removeOne()

此命令可用于以下环境中托管的部署:

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

创建示例collectionorders

db.orders.insertMany( [
{ "_id" : 1, "item" : "abc", "price" : NumberDecimal("12"), "quantity" : 2, "type": "apparel" },
{ "_id" : 2, "item" : "jkl", "price" : NumberDecimal("20"), "quantity" : 1, "type": "electronics" },
{ "_id" : 3, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : 5, "type": "apparel" },
{ "_id" : 4, "item" : "abc", "price" : NumberDecimal("8"), "quantity" : 10, "type": "apparel" },
{ "_id" : 5, "item" : "jkl", "price" : NumberDecimal("15"), "quantity" : 15, "type": "electronics" }
] )

在示例collection上创建以下索引:

db.orders.createIndex( { item: 1 } );
db.orders.createIndex( { item: 1, quantity: 1 } );
db.orders.createIndex( { item: 1, price: 1 } );

以下批量操作指定不同的索引以用于各种更新/替换文档操作:

var bulk = db.orders.initializeUnorderedBulkOp();
bulk.find({ item: "abc", price: { $gte: NumberDecimal("10") }, quantity: { $lte: 10 } }).hint({item: 1, quantity: 1}).replaceOne( { item: "abc123", status: "P", points: 100 } );
bulk.find({ item: "abc", price: { $gte: NumberDecimal("10") }, quantity: { $lte: 10 } }).hint({item: 1, price: 1}).updateOne( { $inc: { points: 10 } } );
bulk.execute();

要查看使用的索引,可以使用 $indexStats 管道:

db.orders.aggregate( [ { $indexStats: { } }, { $sort: { name: 1 } } ] )

提示

另请参阅:

后退

Bulk.find.deleteOne

在此页面上