sql >> データベース >  >> NoSQL >> MongoDB

2つの$orステートメントを組み合わせる

    use test
    db.test.insert({a:1})
    db.test.insert({a:2, Date2:new Date("01/07/2012")})
    db.test.insert({a:3, Date2:new Date("01/08/2012")})
    db.test.insert({a:4, Date1:new Date("01/07/2012"), Date2:new Date("01/07/2012")})
    db.test.insert({a:5, Date1:new Date("01/07/2012")})
    db.test.insert({a:6, Date1:new Date("01/08/2012")})
    

    最初のsubquerydb.test.distinct('a'、{...});

    2番目のsubquerydb.test.distinct('a'、{...});

    (Date1 == null || Date1 <= today) && (Date2 == null || Date2 <= today)
    

    くつろぐ

    Date1 == null && Date2 == null ||
    Date1 == null && Date2 <= today ||
    Date1 <= today && Date2 == null ||
    Date1 <= today && Date2 <= today ||
    

    クエリ

    db.test.find(
    {
      $or : 
      [
        {$and: [
            {"Date1": {"$exists": false}},
            {"Date2": {"$exists": false}}
          ]},
        {$and: [
            {"Date1": {"$exists": false}},
            {"Date2": {
                "$exists": true,
                "$lte": new Date("2012-01-07T04:45:52.057Z")}
            }
          ]},
        {$and: [
            {"Date2": {"$exists": false}},
            {"Date1": {
                "$exists": true,
                "$lte": new Date("2012-01-07T04:45:52.057Z")}
            }
          ]},
        {$and: [
            {"Date2": {
                "$exists": true,
                "$lte": new Date("2012-01-07T04:45:52.057Z")}
            },
            {"Date1": {
                "$exists": true,
                "$lte": new Date("2012-01-07T04:45:52.057Z")}
            }
          ]}
      ]
    })
    >[ 1 ]
    

    これも機能するはずです(「存在しない」と「null」が同じであると仮定します)

    db.test.find(
    {
      $and : 
      [
        {$or: [
            {"Date1": null},
            {"Date1": { "$lte": new Date("2012-01-07T04:45:52.057Z")} }
          ]},
        {$or: [
            {"Date2": null},
            {"Date2": { "$lte": new Date("2012-01-07T04:45:52.057Z")} }
          ]}
      ]
    }
    )
    


    1. Ubuntu上のMongoDBはサービスとして起動せず、ログには何も記録されません

    2. 1回の呼び出しでオブジェクトの配列をmongooseDBに保存するにはどうすればよいですか?

    3. Node.jsを使用したMongoDBのインポート/エクスポート

    4. redisで多対多の関係を築く方法