小编Tez*_*zra的帖子

如何检索MongoDB中每个文档的上次更新时间?

我想知道是否有办法在MongoDB的集合中获取数据(即文档)的最后更新/修改时间.更清楚的是,我想进行查询以检索在特定时间之后更新的所有文档.

是否有任何可能的方法来检索MongoDB中最后修改的时间戳?

注意:对于新创建的文档,我知道我们可以从objectId检索时间戳,但是对于更新,id将是相同的.MongoDB是否将每个文档的最后更新时间存储在任何地方?

我使用morphia作为java驱动程序,所以如果有任何可能的方式来自morphia,请告诉我.

mongodb morphia

20
推荐指数
3
解决办法
3万
查看次数

如何使用camel将大文件发送到ActiveMQ

我正在尝试将一个X?-GB大文件作为流发送到ActiveMQ队列进行处理.

我知道ActiveMQ 支持流,camel-jms也是如此,但是我尝试在队列上设置的东西似乎没什么区别.唯一改变的是关闭流缓存结果是一个"流关闭"异常.

我愿意使用处理器或自定义类(只要资源得到清理),但这应该可以从蓝图中获得.如何通过camel-activemq正确处理大文件而不会出现OutOfMemoryError?

运用

  • ServiceMix的-7.0.0
  • 骆驼2.16.4
  • ActiveMQ的-5.14.3

这是我的骆驼蓝图

<?xml version="1.0" encoding="UTF-8"?>
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"

    <!-- just calls exchange.setBody(exchange.getBody(InputStream.class)) -->    
    <bean id="toStreamBody" class="my.test.toInputStream"/>

    <!-- define a bean of type StreamCachingStrategy which CamelContext will automaticly use -->
    <bean id="streamStrategy" class="org.apache.camel.impl.DefaultStreamCachingStrategy">
        <property name="spoolDirectory" value="${java.io.tmpdir}TestTemp/#uuid#/"/>
        <property name="spoolThreshold" value="131072"/>
        <property name="spoolUsedHeapMemoryThreshold" value="70"/>
        <property name="anySpoolRules" value="true"/>
    </bean>

    <!-- streamCaching="true" is "not a valid attribute" -->
    <camelContext streamCache="true" xmlns="http://camel.apache.org/schema/blueprint">

        <route id="file_route">
            <from uri="file://FileUploadBin?delete=false&amp;moveFailed=.error"/>
            <!-- just calls exchange.setBody(exchange.getBody(InputStream.class)) -->
            <bean ref="toStreamBody"/>
            <to uri="activemq:queue:TestQ"/>
        </route> …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic inputstream apache-camel apache-servicemix

6
推荐指数
1
解决办法
1230
查看次数

相应的then子句不能正常完成

给出表单中的简单if语句

public static String test(boolean flag) {
    if (!flag) {
        return "no";
    } else {
        System.out.println("flag enabled");
    }
    return "yes";
}
Run Code Online (Sandbox Code Playgroud)

要么

public static String test(final boolean flag) 
{
    if (flag) 
    {
        System.out.println("flag enabled");
        return "yes";
    } 
    else 
    {
        return "no";
    }
}
Run Code Online (Sandbox Code Playgroud)

Eclipse给了我警告,强调整个其他块

声明不必要地嵌套在else子句中.相应的then子句不能正常完成

但是,这......

public static String test(final boolean flag) 
{
    if (flag) 
    {
        System.out.println("flag enabled");
        return "yes";
    }
    return "no";
}
Run Code Online (Sandbox Code Playgroud)

没有发出警告.

这个问题似乎有关系,但我没有在第一个例子的其他地方使用return,否则最终没有.

我知道这只是一个偏好,它可以被关闭.但是,我不喜欢忽视事情只是因为我不明白是什么问题.而且我似乎找不到任何关于为什么Eclipse将其添加为可配置警告的文档.

总而言之,The corresponding then clause does not complete normally意味着什么?这个警告试图保护我的问题是什么?

java if-statement

5
推荐指数
1
解决办法
528
查看次数

Neo4j中如何找到关键节点?

所以,假设一个非常简单的图

(A)->(B)->(D)->(E) | (A)->(C)->(D)->(E)

<>-如果你想象一下,它会看起来像这样。

图中的关键节点是指如果将其删除,您现在将拥有 2 个图的节点。(又名单点故障)

因此,在此示例中,E 并不重要,因为它是叶子,B 和 C 并不重要,因为 A 和 D 仍然由另一个节点连接。不过 D 很重要,因为删除它会使 E 从图中的其余部分中孤立出来。

使用 Cypher,如何找到关键节点?(在本例中为 D)


我的第一直觉是采用所有路径,并计算每个节点被触摸的次数,但这将是非常低效且不可靠的。我的第二本能是类似的WHERE NONE (n in path WHERE NOT n in OTHER_PATHS),但即使我能弄清楚如何使其工作,我也不知道路径中的哪个节点是关键的。

我找到了这个博客,但它似乎假设您已经了解一些有关关键节点的信息。

neo4j cypher

5
推荐指数
1
解决办法
366
查看次数

Cypher - myNode &lt;&gt; NULL 和 myNode IS NOT NULL 之间有什么区别?

我有两个测试查询

CREATE (a:TEST)
DELETE a
WITH a
WHERE a <> NULL
RETURN (a:TEST)
Run Code Online (Sandbox Code Playgroud)

哪个返回

Added 1 label, created 1 node, deleted 1 node, statement completed in 0 ms.
Run Code Online (Sandbox Code Playgroud)

CREATE (a:TEST)
DELETE a
WITH a
WHERE a IS NOT NULL
RETURN (a:TEST)
Run Code Online (Sandbox Code Playgroud)

哪个返回

Node with id 1738 has been deleted in this transaction
Run Code Online (Sandbox Code Playgroud)

根据文档,“<>”是不等运算符。所以我的理解是“a <> NULL”和“a IS NOT NULL”在Cypher中是等效的。至少,我希望“a IS NOT NULL”是更可靠的过滤器(因为它是它自己的专用比较运算符)。这看起来可能是在同一事务中创建和删除节点的边缘情况错误,但是 IS NOT NULL 的文档没有说任何超出(暗示)“它是一个运算符”的内容,因此这可能是故意的,如果有一种微妙的尊重。

那么为什么a <> NULL有效而a IS NOT NULL无效呢?又名,这两个比较之间有什么区别?

我正在使用 Cypher …

neo4j cypher

4
推荐指数
1
解决办法
5206
查看次数

如何向离子推送通知添加操作按钮?

我想向离子推送通知添加一些操作按钮。我正在使用cordova pushv5。通知工作正常,但我不知道如何添加这些按钮。

如何添加这些按钮?

cordova ionic-framework angular

3
推荐指数
1
解决办法
3781
查看次数

.NET最快的方法来检查算术

我在应用程序的关键路径中有这些代码

try
{
    checked
    {
        values[i] = (int)(sample[i].Value * (double)magnitude));
    }
} catch (OverflowException)
{
    values[i] = int.MaxValue;
}
Run Code Online (Sandbox Code Playgroud)

但是,一旦幅度变得足够高(大约1.8 ish),此部分开始抛出像疯狂的OverflowExceptions并显着减慢我的应用程序.将此块更改为未选中可以解决问题,因此我知道这是问题所在.

如果溢出时有默认值,那么检查算法的最快/最便宜的方法是什么?

.net c#

3
推荐指数
1
解决办法
105
查看次数

将节点和关系组合成一列的密码

所以作为这个问题的复杂性,我基本上想做

MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() RETURN DISTINCT n, r

我想将 n 和 r 作为没有重复值的一列返回。然而,运行

MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() UNWIND n+r AS x RETURN DISTINCT x

给出“类型不匹配:预期列表但关系(第 1 行,第 47 列)”错误。而这个查询

MATCH (n:TEST) RETURN DISTINCT n UNION MATCH ()-[n]->() RETURN DISTINCT n

将节点和关系放在同一列中,但第一场比赛的上下文在下半场丢失。

那么如何将所有匹配的节点和关系作为一个最小列表返回?

更新:

这是我正在使用的答案查询的最终修改版本

MATCH (n:TEST) OPTIONAL MATCH (n)-[r]->() RETURN n {.*, rels:collect(r {properties:properties(r), id:id(r), type:type(r), startNode:id(startNode(r)), endNode:id(endNode(r))})} as n

neo4j cypher

2
推荐指数
1
解决办法
2049
查看次数

Java中使用$elemMatch实现Mongodb查询

我正在使用 Mongo java 驱动程序从 mongo 集合中检索数据。我有以下查询,我试图在 java 中实现:Json 是:

{
    "_id" : ObjectId("56cd284767c74d3d4dd3ec80"),
    "comments" : "Hello",
    "statusLog" : [ 
        {
            "status" : "Submitted",
            "startDate" : ISODate("2015-01-14T05:00:00.000Z"),
            "endDate" : ISODate("2016-02-29T21:24:24.740Z")
        }, 
        {
            "status" : "Active",
            "startDate" : ISODate("2016-02-29T21:24:24.740Z")
        }
    ],
    "createdDate" : ISODate("2015-01-14T05:00:00.000Z")
}
Run Code Online (Sandbox Code Playgroud)

蒙戈查询:

db.CollectionName.find({},{_id: 0, createdDate:1, "statusLog": {$elemMatch: {"status":"Submitted"}}});
Run Code Online (Sandbox Code Playgroud)

这是我用java编写的查询(mongo java driver 3.4.2):

BasicDBObject query = new BasicDBObject(new BasicDBObject("statusLog",
                new BasicDBObject("$elemMatch", new BasicDBObject("status", "Submitted"))));
Run Code Online (Sandbox Code Playgroud)

运行 java 代码会返回所有状态日志,而不是我正在查找的状态日志。

任何帮助将不胜感激。

java mongodb mongodb-query mongo-java-driver

2
推荐指数
1
解决办法
1万
查看次数

Neo4j Cypher:仅当结束节点存在时才创建关系

基于这个类似的问题,我想要最高效的方式来处理这种情况。

MERGE (n1{id:<uuid>})
SET n1.topicID = <unique_name1>
IF (EXISTS((a:Topic{id:<unique_name1>})) |  CREATE UNIQUE (n1)-[:HAS]->(a))

MERGE (n2{id:<uuid>})
SET n2.topicID = <unique_name2>
IF (EXISTS((a:Topic{id:<unique_name2>})) |  CREATE UNIQUE (n2)-[:HAS]->(a))
Run Code Online (Sandbox Code Playgroud)

不幸的是,IF 不存在,并且 EXISTS 不能用于匹配或查找唯一节点。

  • 我不能使用 OPTIONAL MATCH,因为那样 CREATE UNIQUE 会抛出一个空异常(我希望它忽略空参数)
  • 我不能使用 MATCH,因为如果主题不存在,我将丢失所有行。
  • 我不能使用 MERGE,因为如果节点尚不存在,我不想创建它。
  • 我不能使用 APOC,因为我不能保证它可以在我们的 Neo4j 服务器上使用。

我现在最好的解决方案是

MERGE (a:TEST{id:1})
WITH a
OPTIONAL MATCH (b:TEST{id:2})
// collect b so that there are no nulls, and rows aren't lost when no match
WITH a, collect(b) AS c
FOREACH(n IN c | CREATE UNIQUE …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

2
推荐指数
1
解决办法
2524
查看次数

Neo4j-Cypher:从路径中删除节点并维护到路径的所有节点的链接

我想从路径中删除一个节点,而不会危及原始路径节点.

这是我的测试数据库:

测试DB

我想从路径中删除node(2),但我希望节点1,3,4和5在路径中保持链接.

有没有办法在一个查询中执行此操作?到目前为止,我有以下内容:

MATCH p = (:Connect)-[:to*]-(:Connect)
WITH nodes(p) AS connectNodes
UNWIND connectNodes AS connectNode
WITH distinct connectNode
WHERE connectNode.connectID = 2
DETACH DELETE (connectNode)
Run Code Online (Sandbox Code Playgroud)

这将删除节点2并取消链接路径

取消关联的图表

如何在没有节点2的情况下维护原始路径的节点之间的链接?

编辑:

我通过修改接受的答案的答案来解决它

//Make sure node (n) belongs to the path
MATCH (n:Connect {cID:2})-[:to*]-(:Connect {cID:5})
//get attached nodes, if any, ignoring directions
OPTIONAL MATCH (oa:connect)-[:to]-(n)-[:to]-(ob:connect)
//make sure nothing is duplicated 
WHERE oa.cID <> ob.cID
//Use FOREACH to mimic if/else. Only merge oa to ob if they exist. Query fails without it
FOREACH …
Run Code Online (Sandbox Code Playgroud)

path neo4j graph-databases cypher

1
推荐指数
1
解决办法
217
查看次数