交易次数 > 交易与运作
对于交易:
config
,admin
或local
数据库。system.*
集合。explain
)。getMore
在事务内部调用
。getMore
在事务外部调用
。killCursors
的第一个操作。多文档事务中不允许影响数据库目录的操作,例如创建或删除集合或索引。例如,多文档事务不能包含将导致创建新集合的插入操作。请参阅受限操作。
事务中允许以下读/写操作:
方法 | 命令 | 注意 |
---|---|---|
db.collection.aggregate() |
aggregate |
不包括以下阶段: |
db.collection.countDocuments() |
不包括以下查询运算符表达式: |
|
db.collection.distinct() |
distinct |
在未分片集合中可用。 |
db.collection.find() |
find |
|
geoSearch |
||
delete |
||
findAndModify |
对于upsert ,仅当针对现有集合运行时。 |
|
insert |
仅在针对现有集合运行时。 | |
db.collection.save() |
如果插入,则仅在针对现有集合运行时。 | |
update |
对于upsert ,仅当针对现有集合运行时。 |
|
对于插入操作,仅在针对现有集合运行时。
对于
upsert ,仅当针对现有集合运行时。 |
在事务中执行不同的操作:
对于未分片的集合,您可以在舞台上使用
db.collection.distinct()
method /
distinct
command以及聚合管道$group
。
对于分片集合,不能使用
db.collection.distinct()
方法或
distinct
命令。
要查找分片集合的不同值,请在$group
阶段使用聚合管道。例如:
代替db.coll.distinct("x")
,使用
代替,使用:db.coll.distinct("x", { status: "A" })
管道将游标返回到文档:
迭代光标以访问结果文档。
信息的命令,例如isMaster
,
buildInfo
,connectionStatus
(和他们的辅助方法)被允许在交易; 但是,它们不能是事务中的第一个操作。
交易中不允许执行以下操作:
影响数据库目录的操作,例如创建或删除集合或索引。例如,事务不能包含将导致创建新集合的插入操作。
该listCollections
和listIndexes
命令及其辅助方法也被排除。
非CRUD和非信息的操作,如
createUser
,getParameter
,
count
,等和他们的助手。
也可以看看