gpt4 book ai didi

javascript - MongoDB 确定一条记录是否会通过 findOne

转载 作者:行者123 更新时间:2023-11-28 08:06:38 25 4
gpt4 key购买 nike

我想知道如何在不实际执行数据库查询的情况下执行以下操作。即我想知道“someData”是否会传递“whereClause”而不将其放入表中并再次要求返回。 IE。在 findOne 中运行逻辑,无需插入和选择的开销。只是为了让它更有趣,请考虑到我需要让它线程安全,这就是为什么我在下面搞乱了 Guid 之类的东西。另请注意,where 子句可能比下面的更复杂,例如 { a : { $ne : 1 } }

给定来源:

someData = { a: 1, b: 2 };
whereClause = { b: 2 };

我需要修复的代码:

someData.GUID = ObjectId();

// DB QUERY - insert
db.workspace.insert(someData);

whereClause.GUID = inputsValues.GUID;

// Check if the data passes the whereClause
// DB QUERY - findOne
var whereResult = db.workspace.findOne(whereClause);

// DB QUERY - remove
db.workspace.remove({ "GUID": whereClause.GUID });

if (whereResult == null)
alert("Fail");
else
alert("Pass");

在 SQL 中我想要的可以这样表达:(伪语法)

if (
Select Count(*) from ((Select 1 as A, 2 as B) Data where B = 2) Result
) = 1 then 'pass' else 'fail'

上面的查询实际上从未触及表 - 这是我的主要目标。

最佳答案

好的,所以我把这个问题交给了 MongoDB 支持(10gen)并向他们寻求建议。似乎没有语法方式可以表达我想说的话。他们的建议是使用一个尽可能靠近应用程序的单独的 mongodb 实例,并且仅将其用于此目的,以避免由于锁定等而导致任何潜在的速度减慢。

所以解决方案是:在应用程序本地创建一个新的 MongoDB 实例,并在其中运行这些查询。这是做到这一点的唯一方法。

我会将这个问题留给任何能够提供更好解决方案的人。

关于javascript - MongoDB 确定一条记录是否会通过 findOne,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com